适用于Java 6和Java 7的Mac OS X JavaApplicationStub

时间:2014-03-09 11:39:00

标签: java macos

我正在开发一个包含本机可执行文件的跨平台Java应用程序。对于Mac OS X,我使用Jarbundler作为ANT任务来创建App包。

现在Oracle发布了Java 7及其自己的ANT任务“Appbundler”我遇到了问题。

使用本机Mac OS X JavaApplicationStub和Jarbundler仅适用于Apple Java 6,使用Oracle JavaApplicationStub和Appbundler仅适用于Java 7。

我非常了解这个的背景,但我想知道是否有可用于Java 6和Java 7的JavaApplicationStub。 到目前为止我还没找到...

顺便说一下:JavaApplicationStub必须是原生的C / C ++ / C#二进制文件吗?或者它也可以是一个可执行的shellcript?


更新

shell脚本是本机JavaApplicationStub的可能替代方法。

我扩展了Ian Roberts basic shell script并将其作为"universalJavaApplicationStub"在GitHub上发布。它现在支持Apple Java 6和Oracle Java 7以及应用程序包中Java属性的Info.plist样式(Oracle引入了新的属性键)。随意使用它!

2 个答案:

答案 0 :(得分:2)

我想我在@IanRoberts中找到答案回答了这个主题"Java AppBundler application pointing to JRE defined by JAVA_HOME"

他建议用自定义shellcript替换JavaApplicationStub以支持Java 6和Java 7.

答案 1 :(得分:2)

bundle中的主要可执行文件可以是shell脚本,因此您可以使用首先尝试/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java(java 7 JRE安装位置)的脚本,如果是/usr/bin/java则返回{{1}}未找到。后者将运行已安装的最新JDK(6或7),如果找到 no JDK,则应提示安装Java 6.