AssertJ 在本地构建时没有这样的方法错误

AssertJ no such method error when building locally

我在本地构建多模块项目时遇到问题。

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 模块之前构建客户端,即使在客户端的集成测试中也会执行此指令,但在这种情况下,不会发生 NoSuchMethodError。如果我在 macOS 系统或 Travis-ci 上构建(linux 和 mac 构建),我会 specify这个问题没有出现。这似乎只是一个本地问题(我正在使用 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" });