Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java(maven):如何知道错误在哪里(无用的回溯)_Java_Maven - Fatal编程技术网

Java(maven):如何知道错误在哪里(无用的回溯)

Java(maven):如何知道错误在哪里(无用的回溯),java,maven,Java,Maven,我正在用maven()编写我的第一个项目。当我使用mvn-Dtest=EchoTest测试运行测试时,我得到了一个构建失败 关键是EchoActorSystem是一个相当复杂的类,而actorOf方法需要大量的工作,从system调用许多函数。例如,它调用super.actorOf(),然后修复结果的一些属性,等等。 我正在通过添加许多Sysytem.out.println来搜索故障线路,但我确信这不是正确的工作方式。您将在目标/surferreports目录中找到完整的堆栈跟踪它,文件Echo

我正在用maven()编写我的第一个项目。当我使用
mvn-Dtest=EchoTest测试运行测试时,我得到了一个构建失败

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

您将在
目标/surferreports
目录中找到完整的堆栈跟踪它,文件
EchoTest.txt

您可以在
target/surfire reports
目录中找到完整的堆栈跟踪,文件
EchoTest.txt

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

神奇的是
-DtrimStackTrace=false


Maven将默认地将测试代码削减到只显示在测试中的行。老实说,这是我第一次注意到这种行为,我觉得这是一个非常奇怪的默认值(我可以理解控制台输出,但在surfire reports XML报告中也是如此?

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

神奇的是
-DtrimStackTrace=false


Maven将默认地将测试代码削减到只显示在测试中的行。老实说,这是我第一次注意到这种行为,我觉得这是一个非常奇怪的默认值(我可以理解控制台输出,但在surfire reports XML reports中也是如此?

Hum,EchoTest.initialize(EchoTest.java:50)
不够吗?但是如果你想把你的日志弄得乱七八糟,你可以做
mvn-X clean test
。把
EchoTest.java
第50行的内容添加到你的问题中。这看起来像是一个竞争条件,在你的两行代码之间有一些其他线程将
system
设置为null。这是整个
initialize()
方法吗?是否每次使用maven运行时都会发生这种情况?如果JUnit在没有Maven的情况下运行,会发生这种情况吗?@JiriTousek-在这种情况下,Maven吃掉了大部分堆栈跟踪。@Tunaki虽然
-X
在输出中添加了大量bumf,但Maven仍然会因为测试失败而切断堆栈跟踪。嗯,EchoTest.initialize(EchoTest.java:50)
是否足够?但是如果你想把你的日志弄得乱七八糟,你可以做
mvn-X clean test
。把
EchoTest.java
第50行的内容添加到你的问题中。这看起来像是一个竞争条件,在你的两行代码之间有一些其他线程将
system
设置为null。这是整个
initialize()
方法吗?是否每次使用maven运行时都会发生这种情况?如果JUnit在没有Maven的情况下运行,会发生这种情况吗?@JiriTousek-在这种情况下,是Maven吃掉了大部分堆栈跟踪。@Tunaki当
-X
向输出添加了大量bumf时,Maven仍然会因为测试失败而切断堆栈跟踪。事实并非如此。target/surefire reports/EchoTest.txt仅包含“测试运行:4[…]java.lang.NullPointerException at EchoTest.initialize(EchoTest.java:50)”,在跟踪上没有更多指示可能是我的项目设置错误?它没有。target/surefire reports/EchoTest.txt仅包含“测试运行:4[…]java.lang.NullPointerException at EchoTest.initialize(EchoTest.java:50)”,跟踪上没有更多指示可能是我的项目设置错误?
nonAcceptedTypeVerification(EchoTest)  Time elapsed: 0.044 sec  <<< ERROR!
java.lang.NullPointerException
    at EchoTest.initialize(EchoTest.java:50)
@Before
public void initialize() throws InterruptedException
{
    system = new EchoActorSystem();
    echo_actor = system.actorOf();  <-- line 50
}