我在单元测试中使用-XstartOnFirstThread参数来解决OS中的SWT启动问题:
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-surefire-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<argLine>-XstartOnFirstThread</argLine>
</configuration>
</plugin>
</plugins>
</build>在OSX中通过测试,但在Linux中失败,因为它提到了-XstartOnFirstThread是不被识别的:
[/var/local/devtools/jdk1.8.0_141/jre/bin/java, -Dosgi.noShutdown=false,
-Dosgi.os=linux, -Dosgi.ws=gtk, -Dosgi.arch=x86_64, -XstartOnFirstThread,
-Dosgi.clean=true, -jar ...
21:22:35 [artifact:mvn] Unrecognized option: -XstartOnFirstThread
21:22:35 [artifact:mvn] Error: Could not create the Java Virtual Machine.
21:22:35 [artifact:mvn] Error: A fatal exception has occurred. Program will exit.是否有任何方法可以在Linux上工作,或者在tycho中添加一个条件来忽略Linux中的这个参数。
发布于 2017-09-29 11:36:14
你的头上有一种误解。当您运行java -X时,您会被告知:
-X选项是非标准的,如有更改,恕不另行通知.
换句话说:任何以-X开头的东西都是高度特定的实现。当然,这也增加了版本控制的时间。
意思:除非您在Linux和Mac上使用完全相同版本的Oracle,否则以-X开头的任何东西都可能不会以相同的方式工作。
换句话说:最有可能的是,您的期望值认为这在这两个平台上都是有缺陷的。
发布于 2017-10-02 17:22:37
由于-XstartOnFirstThread选项是macOS特定的,使用只有在JUnit测试在macOS中运行时才会触发的配置文件,这听起来是最好的选择。
<profiles>
<profile>
<id>platform-mac</id>
<activation>
<os>
<family>mac</family>
</os>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-surefire-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<argLine>-XstartOnFirstThread</argLine>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>https://stackoverflow.com/questions/46485846
复制相似问题