2017-08-16 267 views
2

我试图为Mac和Windows创建基于Java的GUI。到目前为止,我已经能够创建一个在Windows上运行的可执行文件.jar将.jar转换为Mac OS X应用程序

我遇到的问题是在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文件”导出选项创建的。不知道这是否与众不同。

+0

我相信JarBundler,AppBundler等使用的Java存根可执行文件已被弃用一段时间,至少从OS X 10.8开始。如果你现在想在MacOS上有一个带有Java代码的'.app'包,我认为你需要构建自己的JavaApplicationStub-like程序并通过JNI运行你的代码。 – wmorrell

+0

@wmorrell我以前从未使用过JNI,我需要做什么?你知道我可以使用的任何资源/教程吗? –

+0

@Agastya Sharma你可以提供你的罐子,如果它可能公开分享。 – JTeam

回答

0

其实AppBundler就是你要找的东西,但你说过:“不知道如何使用它”。所以,在这里你是如何使用它: http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/packagingAppsForMac.html 。 但请注意,本文档中的大部分链接都已更改或删除,但它解释了AppBudler的工作原理。

+0

我想你和我在这种情况下可能会讨论不同的应用程序打包程序。我试过AppBundler(一个GitHub项目)和appbundler(由Java发布)。没有为我工作。 –

0

这是我用来将.jar(ShowTime.jar,Class ShowTime)转换为.jar文件的方式。应用程序,在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

+0

我试过用这个,当我试图打开javapackager用我的.jar文件制作的应用程序时,它给了我相同的-10810错误代码。我跑完了教程,它运行,所以我不知道我的问题是在这种情况下。 –

0

我只是用这个Mario.jar

步骤测试此:

  1. 确保python安装在你的mac上,如果不使用brew和fire brew安装python3
  2. 混帐克隆https://github.com/Jorl17/jar2app
  3. CD jar2app
  4. sudo的运行./install.sh在/ usr /本地
  5. 在/ usr /本地/ jar2app〜/下载/ Mario.jar //你的罐子代替罐子路径
  6. 检查新的.app是在当前直接创建的
相关问题