Java -XstartonFirstThread命令行选项在Linux中未识别,但在OSX中工作



我正在使用 -XstartonFirstThread 参数comgrance在单元测试中求解OS X中的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中的条件的方法。

AS -xstartonFirstThread选项是Mac OS X特定的,使用仅在MacOS中运行Junit Test时才会触发的配置文件,听起来是最佳选项。

<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>

您的末端存在误解。运行Java -X时,您会被告知:

-x选项是非标准的,可能会更改,恕不另行通知。

换句话说:以-x开头的任何内容is 高度特定于实现。当然,这也增加了版本掌握的时刻

含义:除非您在Linux上和Mac上使用完全相同的Oracle Java版本,否则任何以-x ables of -x 开头的任何东西都无法以相同的方式工作。

换句话说:最有可能您的期望从两个平台上起作用,这是有缺陷的。

相关内容

最新更新