我已经使用 Eclipse 编写了一个 Java 应用程序,该应用程序使用 SWT 作为 UI。 (有关详细信息,请参阅 SWT Exception when running jar: Exception in thread "main" org.eclipse.swt.SWTException: Invalid thread access)。
我导出为 JAR,但无法从 Finder 和终端运行它。我终于用 java -XstartOnFirstThread -jar CommonDenom.jar
但是,当我从 eclipse 导出为 JAR 时,我仍然无法让它运行。这是因为它在导出时需要绑定(bind)参数-XstartOnFirstThread
。然后我注意到在 Properties >> Run/Debug Settings >> commonDenom >> Edit >> (x)= Arguments
中有一个复选框,上面写着“Use the -XstartOnFirstThread
”使用 SWT 启动时的 code> 参数。”但已经检查过了。所以我认为这个选项仅适用于使用 Eclipse 启动代码时,不适用于导出的 JAR。
因此,我手动将参数添加到同一选项卡中的 VM Arguments
框中。当我导出为可运行 JAR 时,我注意到一条警告,内容为“VM 参数将不会成为可运行 JAR 的一部分。启动 JAR 时可以在命令行上传递参数。
最终,我需要一种方法来从Finder(无论是JAR还是其他方式)启动它,而无需打开终端并手动启动它。是的,我可以编写一个Shell脚本来启动它,但我觉得必须有一个更简单的方法。
最佳答案
你有两个选择。最简单的方法是创建一个 shell 脚本:
#!/bin/bash
java -XstartOnFirstThread -jar CommonDenom.jar
用户运行脚本,该脚本设置参数并运行 Java。
另一种方法是创建 Application Bundle 。它包括一个属性文件 (Info.plist),您可以在其中设置这些属性。您还可以使用 Oracle 的 appbundler tool创建应用程序包。
关于java - 使用 VM 参数导出 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22286974/