【问题标题】:Java -XstartOnFirstThread command line options unrecognized in Linux but working in OSXJava -XstartOnFirstThread 命令行选项在 Linux 中无法识别但在 OSX 中工作
【发布时间】:2018-03-11 04:23:42
【问题描述】:

我在单元测试中使用 -XstartOnFirstThread 参数来解决 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 中忽略这个参数。

【问题讨论】:

    标签: java linux macos junit tycho-surefire-plugin


    【解决方案1】:

    你有一个误解。当你运行 java -X 时,你会被告知:

    -X 选项是非标准的,如有更改,恕不另行通知。

    换句话说:任何以 -X 开头的都是高度实现特定的。当然,这也增加了版本控制的时刻。

    含义:除非您在 Linux 和 Mac 上使用完全相同版本的 Oracle Java,否则以 -X 开头的任何东西可能都不会以相同的方式工作。

    换句话说:您的期望很可能一开始就存在缺陷。

    【讨论】:

    • 以下选项是 Mac OS X 特定的:-XstartOnFirstThread 在第一个 (AppKit) 线程上运行 main() 方法 ==> Java -X -help 的结果
    【解决方案2】:

    由于 -XstartOnFirstThread 选项是 Mac OS X 特定的,因此使用仅当 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>
    

    【讨论】:

      猜你喜欢
      • 2019-03-11
      • 2021-08-21
      • 2021-01-28
      • 1970-01-01
      • 2015-04-01
      • 2021-11-20
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多