我用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
-XstartOnFirstThread
。然后我注意到在Properties >> Run/Debug Settings >> commonDenom >> Edit >> (x)= Arguments
中有一个勾选框,上面写着“使用SWT启动时使用-XstartOnFirstThread
参数”。但它已经被检查过了。所以我认为这个选项仅适用于使用Eclipse启动代码,并且不适用于导出的JAR。
所以我手动将参数添加到同一选项卡中的VM Arguments
框中。当我作为可运行的JAR导出时,我注意到一条警告,其中显示“VM参数不会成为可运行JAR的一部分。在启动JAR时,可以在命令行上传递参数。
最终,我需要一种方法来从finder(无论是JAR还是其他)启动它,而无需打开终端并手动启动它。是的,我可以编写一个Shell脚本来启动它,但我觉得必须有一个更简单的方法。
答案 0 :(得分:2)
您有两种选择。简单的方法是创建一个shell脚本:
#!/bin/bash
java -XstartOnFirstThread -jar CommonDenom.jar
用户运行脚本,该脚本设置参数并运行Java。
另一种方法是创建Application Bundle。它包含一个属性文件(Info.plist),您可以在其中设置这些属性。您还可以使用Oracle的appbundler tool创建应用程序包。