java - 使用 VM 参数导出 jar

标签 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 时,我仍然无法让它运行。这是因为它在导出时需要绑定(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/

相关文章:

java - 为什么Java同时有Image类和Icon类?

java - jQuery/Ajax 显示“另存为”对话框,用于下载从 servlet 发送的文件

macos - NSTableView单元格编辑: where to perform post-editing operations?

javascript - 在本地主机上查看页面时 jQuery 脚本不起作用

java - 线程测试时间

java - 变量在方法中定义了 2 次

java - 无法启动 Intent

java - 如何从 URL 填充我的 .xml 文件?

java - 如何从接口(interface)生成 JAVA RMI stub 和骨架?

c++ - 静态对象未在 Mac OS X 上初始化