我正在努力交付java应用程序。我用Eclupse Luna写的,我设法导出了一个带有外部文件(图像)的罐子。因此,现在我有了一个来自Eclipse的ant构建xml文件,我可以运行ant -buildfile projectANT.xml
,并且只有在复制了带有所有外部图像的数据文件之后,我才能双击jar文件来执行它。
现在我想创建一个Mac捆绑包,这样一个有图标的project.app就可以添加到Dock中,并且可以在其中包含java jdk(不需要安装java)。我使用的是Java 1.8。
我试图从一个现有的应用程序中获得一个捆绑包,并将我的jar放入其中(包括所有文件、jdk和其他所有内容),但我得到了LSOpenURLsWithRole() failed with error -10810
。
然后我尝试使用JarBundler 2.3.1来处理ant lib文件夹中的jar bundler,但我没能创建一个正确的ant文件,它总是缺少一些未定义的属性,比如:
Problem: failed to create task or type jarbundler
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
然后我尝试从苹果开发工具14.5.0版本启动Jar Bundler
,但它无法加载我的jar文件(没有错误……只是选择了Main class
后,Create Application
按钮保持灰色,我无法点击它。
我还试图从一个脚本中创建一个捆绑包,在这个脚本中,我在这篇博客文章之后调用java project.jar
,但似乎太旧了,在我的Mac OS/X(10.8.5)上不起作用
有什么建议吗?有没有一种简单的方法可以从Eclipse导出的jar中使用Java 1.8创建Java应用程序?
我认为你不能修改现有Mac捆绑包的内容,直觉告诉我有安全功能可以防止这种情况,用恶意代码修改现有捆绑包太容易了。你需要重新开始你的蚂蚁任务,并制作一个新的Mac捆绑包。按照这个链接"构建Mac OSX Java应用程序",你会发现它包含一个奇妙的蚂蚁任务示例,并写下如何使用蚂蚁任务来完成这一任务。
以下是他的文章中的例子
<target name="create-bundle" depends="clean">
<bundleapp outputdirectory="${release.dir}"
name="appName"
displayname="displayName"
identifier="com.your.app.Main"
shortversion="0.1"
icon="app.icns"
copyright="Your Name"
applicationCategory="public.app-category.utilities"
mainclassname="com/your/app/Main"
>
<runtime dir="${env.JAVA_HOME}" />
<!-- may want to also reference dependent jars using a classpath ref-->
<classpath file="path/to/your/jar" />
<option value="-Xdock:icon=Contents/Resources/youricon.icns"/>
<option value="-Dapple.laf.useScreenMenuBar=true"/>
<option value="-Dcom.apple.macos.use-file-dialog-packages=true"/>
<option value="-Dcom.apple.macos.useScreenMenuBar=true"/>
<option value="-Dapple.awt.application.name=appName"/>
<option value="-Dcom.apple.smallTabs=true"/>
</bundleapp>
</target>
确保将捆绑包设置为使用java1.8运行时打开https://apple.stackexchange.com/a/130692