在本地构建多模块项目期间遇到问题。

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.118
sec <<< FAILURE! - in org.end2end.ClientEnd2EndIT
org.end2end.ClientEnd2EndIT  Time elapsed: 0.118 sec  <<< ERROR!
java.lang.NoSuchMethodError:
org.assertj.core.util.Throwables.
              appendStackTraceInCurrentThreadToThrowable


正是在测试的setupClass方法中执行此指令时:

frame = GuiActionRunner.execute(() -> GUI.createGui(false));


其中GuiActionRunner.execute()是AssertJ依赖项的方法。在同一项目中,我正在End2End模块之前构建Client,并且即使在客户端的集成测试中也要执行此指令,但在这种情况下不会发生NoSuchMethodError。我要指定的是,如果我在macOS系统下或Travis-ci(Linux和Mac构建)上进行构建,则不会出现此问题。这似乎只是一个本地问题(我使用的是Linux Mint 18.2)。有人可以帮忙吗?

最佳答案

解决了。问题是在创建jframe时抛出了一个无头的隐藏异常,这是由于我在调用以下事实:

SpringApplicationBuilder builder = new
SpringApplicationBuilder(ServerApplication.class);
builder.run(new String[] { "--server.port=9999" });


我通过添加解决:

SpringApplicationBuilder builder = new SpringApplicationBuilder(ServerApplication.class);
    builder.headless(false); //this line
    builder.run(new String[] { "--server.port=9999" });

10-04 11:42