将.jar转换为Mac OS X应用程序

时间:2017-08-16 16:42:24

标签: java eclipse macos software-distribution

我正在尝试为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文件”导出选项创建的。不确定这是否有所不同。

3 个答案:

答案 0 :(得分:3)

我刚刚使用此Mario.jar

对此进行了测试

<强>步骤:

  1. 确保你的mac上安装了python,如果没有使用brew并且使用fire brew install python3
  2. git clone 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是否在当前的directoty中创建

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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