使用来自 oracle (http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/packagingAppsForMac.html) 的 appbundler ant 任务,我能够使用捆绑的 JRE7 创建一个工作的 Mac 应用程序,但加载一些资源如 native 库失败,因为 Info.plist 接缝中的路径无效。
例如,在我使用的 build.xml ant 任务中(我的 native 库被复制到应用程序包内的 Contents/Java 文件夹):
a) <option value="-Djava.library.path=Contents/Java/" />
b) <option value="-Djava.library.path=$JAVAROOT/" />
c) <option value="-Djava.library.path=$APP_PACKAGE/Contents/Java/" />
所有结果都会导致 UnsatisfiedLinkError。还找不到其他一些资源,如 splash-image:
<option value="-splash:Contents/Java/my-splash.png" />
知道如何在此处正确设置 JVMOptions 的路径吗?
编辑:Java7 appbundler 使用与 jdk6 随附的 Apple 的 Jar Bundler 不同的 plist 语法,例如没有要添加 SplashFile 的“Java”字典。
最佳答案
根据appbundler task documentation您正在寻找的魔法变量是 $APP_ROOT
:
<option value="-Djava.library.path=$APP_ROOT/Contents/Java/" />
这也适用于 <argument value="..."/>
(主类的参数,而不是 JVM 的选项)。
关于Java Mac appbundle 资源路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13624129/