【发布时间】:2018-01-24 21:57:48
【问题描述】:
我正在尝试为 Mac 和 Windows 创建一个基于 Java 的 GUI。到目前为止,我已经能够创建一个在 Windows 上运行的可执行 .jar 文件。
我遇到的问题是在 Mac 上运行 .jar。当我双击运行时,它说我应该使用-XstartOnFirstThread 选项来运行.jar。因此,我创建了一个 shell 脚本,只需使用以下代码行即可打开它:
java -XstartOnFirstThread -jar myJar.jar
这可以很好地运行程序,但它不是一个易于分发的解决方案。所以,我正在尝试将 .jar 捆绑到 Mac 应用程序中。到目前为止,我尝试过的所有操作都会产生相同的错误代码:
LSOpenURLsWithRole() failed for the application MyApp.app with error -10810
这是我迄今为止尝试过的:
JarBundler(链接here):同样的问题
Java 教程: 尝试按照本教程进行操作,但 appbundler 似乎不再存在(至少我在我的 mac 上找不到它,我在 Java 的网站上也找不到它),并且此页面上其他软件的大多数链接都已失效.
AppBundler ant 任务(链接here):不知道如何使用它。
Eclipse OS-X App Bundler:同样的问题。
在应用内更改可执行 JavaApplicationStub 的权限:同样的问题
我自己从头开始捆绑应用程序:同样的问题。
我现在几乎没有想法,有什么我遗漏的吗?
编辑:我使用的 .jar 文件是由 Eclipse 的“创建可运行的 JAR 文件”导出选项创建的。不确定这是否会有所不同。
【问题讨论】:
-
我相信 JarBundler、AppBundler 等使用的 Java 存根可执行文件已经被弃用了一段时间,至少从 OS X 10.8 开始。如果你现在想在 MacOS 上使用
.app捆绑 Java 代码,我认为你需要构建自己的 JavaApplicationStub 类程序并通过 JNI 运行代码。 -
@wmorrell 我以前从未使用过 JNI——我究竟需要做什么?你知道我可以用来做这件事的任何资源/教程吗?
-
@Agastya Sharma 你能提供你的罐子吗,如果可以公开分享的话。
-
@JTeam 只是想知道你为什么需要这个 jar - 我想在部署之前限制它的曝光
-
@AgastyaSharma 我在找那个罐子,这样我就可以用你的罐子测试我的答案。无论如何,我用 Mario.jar 测试了它,它正在工作,请检查我的答案。
标签: java eclipse macos software-distribution