我已经使用 Eclipse 编写了一个 Java 应用程序,该应用程序使用 SWT 作为 UI。 (看运行 jar 时出现 SWT 异常:线程“main”中出现异常 org.eclipse.swt.SWTException:线程访问无效 https://stackoverflow.com/questions/22273960/swt-exception-when-running-jar-exception-in-thread-main-org-eclipse-swt-swtex/22275111?noredirect=1#22275111详细信息)。
我导出为 JAR,但无法从 Finder 和终端运行它。我终于让它从终端运行java -XstartOnFirstThread -jar CommonDenom.jar
然而,当我从 eclipse 导出为 JAR 时,我仍然无法让它运行。这是因为它需要参数-XstartOnFirstThread
导出时与其捆绑在一起。然后我注意到在Properties >> Run/Debug Settings >> commonDenom >> Edit >> (x)= Arguments
有一个复选框显示“使用-XstartOnFirstThread
使用 SWT 启动时的参数。”但它已经被检查过。所以我认为此选项仅适用于使用 Eclipse 启动代码时,并且不适用于导出的 JAR。
所以我手动将参数添加到VM Arguments
同一选项卡中的框。当我导出为可运行 JAR 时,我注意到一条警告,内容为“VM 参数将不会成为可运行 JAR 的一部分。启动 JAR 时可以在命令行上传递参数。
最终,我需要一种方法来从 finder(无论是 JAR 还是其他方式)启动它,而无需打开终端并手动启动它。是的,我可以编写一个Shell脚本来启动它,但我觉得必须有一个更简单的方法。
你有两个选择。最简单的方法是创建一个 shell 脚本:
#!/bin/bash
java -XstartOnFirstThread -jar CommonDenom.jar
用户运行脚本,该脚本设置参数并运行 Java。
另一种方法是创建一个应用程序包 https://developer.apple.com/library/mac/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW13。它包括一个属性文件 (Info.plist),您可以在其中设置这些属性。您还可以使用 Oracle 的应用程序捆绑工具 http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/packagingAppsForMac.html创建应用程序包。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)