使用VM参数导出jar

时间:2014-03-09 19:27:37

标签: java eclipse macos jar swt

我用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时,我仍然无法运行它。这是因为它在导出时需要与它捆绑的参数-XstartOnFirstThread。然后我注意到在Properties >> Run/Debug Settings >> commonDenom >> Edit >> (x)= Arguments中有一个勾选框,上面写着“使用SWT启动时使用-XstartOnFirstThread参数”。但它已经被检查过了。所以我认为这个选项仅适用于使用Eclipse启动代码,并且不适用于导出的JAR。

所以我手动将参数添加到同一选项卡中的VM Arguments框中。当我作为可运行的JAR导出时,我注意到一条警告,其中显示“VM参数不会成为可运行JAR的一部分。在启动JAR时,可以在命令行上传递参数。

最终,我需要一种方法来从finder(无论是JAR还是其他)启动它,而无需打开终端并手动启动它。是的,我可以编写一个Shell脚本来启动它,但我觉得必须有一个更简单的方法。

1 个答案:

答案 0 :(得分:2)

您有两种选择。简单的方法是创建一个shell脚本:

#!/bin/bash
java -XstartOnFirstThread -jar CommonDenom.jar

用户运行脚本,该脚本设置参数并运行Java。

另一种方法是创建Application Bundle。它包含一个属性文件(Info.plist),您可以在其中设置这些属性。您还可以使用Oracle的appbundler tool创建应用程序包。