Java( maven ): how to know where lies the error (useless backtrace)

标签 java maven

我正在用 maven ( here ) 编写我的第一个项目。当我使用 mvn -Dtest=EchoTest test 运行测试时,我得到一个BUILD FAILURE

nonAcceptedTypeVerification(EchoTest)  Time elapsed: 0.044 sec  <<< ERROR!
java.lang.NullPointerException
    at EchoTest.initialize(EchoTest.java:50)

我怎样才能更准确地知道代码中的哪一行触发了 NullPointerExcepion ? 换句话说:如何要求 Maven 打印整个回溯?

我尝试了 mvn -e,并在 target 子目录中搜索。

编辑

以下是引发 NullPointerException 的行(在 EchoText.java 中):

@Before
public void initialize() throws InterruptedException
{
    system = new EchoActorSystem();
    echo_actor = system.actorOf();  <-- line 50
}

重点是 EchoActorSystem 是一个相当复杂的类,actorOf 方法需要大量工作,从 system 调用许多函数。例如它调用 super.actorOf() 然后修复结果的一些属性,等等。 我通过添加许多 Sysytem.out.println 来搜索故障行,但我确信这不是正确的工作方式。

最佳答案

mvn test -Dtest=EchoTest -DtrimStackTrace=false 将为您提供完整的堆栈跟踪。

神奇的是-DtrimStackTrace=false

Maven 将默认切断 stacktrace下降到仅出现在您的测试中的行。老实说,这是我第一次注意到这种行为,我觉得这是一个非常奇怪的默认设置(我可以理解控制台输出,但在 surfire-reports XML 报告中也是如此?)

关于Java( maven ): how to know where lies the error (useless backtrace),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35506936/

相关文章:

java - 通过在 URL 中指定方法路由到特定的 HTTP 方法资源

java - Eclipse 无法解析 maven 项目中的 akka 引用

java - 插件需要 Maven 版本 3.0

java - Integer.parseInt 不将字符串解析为整数

java - 如何使用 PowerMockito 模拟 RestTemplate

java - 机器和数据库中的最大小数位数

java - 即使存在 getter,也会发生 PropertyNotFoundException

java - Jenkins Maven 插件 : Classloading Feature

java - 无法执行目标 org.apache.maven.plugins :maven-compiler-plugin:3. 8.1:编译

maven - 在STS/Maven项目中导出Groovy依赖项导致类路径无效