【问题标题】:Converting a .jar into a Mac OS X app [closed]将 .jar 转换为 Mac OS X 应用程序 [关闭]
【发布时间】: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


【解决方案1】:

我刚刚用这个Mario.jar测试了这个

步骤:

  1. 确保在你的 Mac 上安装了 python,如果没有使用brew 并启动 brew install python3
  2. git 克隆https://github.com/Jorl17/jar2app
  3. cd jar2app
  4. sudo ./install.sh /usr/local
  5. /usr/local/jar2app ~/Downloads/Mario.jar //用你的jar替换jar路径
  6. 检查新的.app是在当前目录中创建的

【讨论】:

    【解决方案2】:

    这是我在 MacOS 终端上将 .jar(ShowTime.jar,ShowTime 类)转换为 .app 的方式:

    mkdir -p package/macosx
    cp ShowTime.icns package/macosx
    jdk=$(/usr/libexec/java_home)
    $jdk/bin/javapackager -version
    $jdk/bin/javapackager -deploy -native dmg \
       -srcfiles ShowTime.jar -appclass ShowTime -name ShowTime \
       -outdir deploy -outfile ShowTime -v
    cp deploy/bundles/ShowTime-1.0.dmg show-time-installer.dmg
    ls -l
    

    这是我举的例子:How to Create a Mac OS X Installer for a Java Application

    【讨论】:

    • 我尝试使用它,当我尝试打开 javapackager 使用我的 .jar 文件创建的应用程序时,它给了我相同的 -10810 错误代码。我浏览了本教程并且它有效,所以我不确定在这种情况下我的问题是什么。
    【解决方案3】:

    实际上 AppBundler 是您正在寻找的,但您曾说过:“无法完全弄清楚如何使用它”。所以,这里是它的使用方法: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/packagingAppsForMac.html . 但请注意本文档中的大部分链接已更改或删除,但它解释了 AppBudler 的工作原理。

    【讨论】:

    • 我想你和我在这种情况下可能会谈论不同的应用程序捆绑器。我已经尝试过 AppBundler(一个 GitHub 项目)和 appbundler(由 Java 发布)。两者都不适合我。
    猜你喜欢
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多