Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
指向Java_HOME定义的JRE的Java AppBundler应用程序_Java_Macos_Java 7 - Fatal编程技术网

指向Java_HOME定义的JRE的Java AppBundler应用程序

指向Java_HOME定义的JRE的Java AppBundler应用程序,java,macos,java-7,Java,Macos,Java 7,我一直在使用将Java应用程序打包为.app。如果我将JRE7打包到.app包中,我已经成功运行了该应用程序。 是否可以将.app(在Info.plist中)配置为指向JAVA_HOME环境变量定义的JRE? 如果我这样做,我将“无法加载Java运行时环境”!我曾尝试以不同的方式配置JAVA_HOME,但没有成功 有人能提供任何帮助或建议吗?appbundler应用程序可以在应用程序包中使用嵌入式Java 7 JRE,也可以在/Library/Internet插件/JavaAppletPlugi

我一直在使用将Java应用程序打包为.app。如果我将JRE7打包到.app包中,我已经成功运行了该应用程序。 是否可以将.app(在Info.plist中)配置为指向JAVA_HOME环境变量定义的JRE? 如果我这样做,我将“无法加载Java运行时环境”!我曾尝试以不同的方式配置JAVA_HOME,但没有成功


有人能提供任何帮助或建议吗?

appbundler
应用程序可以在应用程序包中使用嵌入式Java 7 JRE,也可以在
/Library/Internet插件/JavaAppletPlugin.plugin/Contents/Home
中安装Java 7 JRE(与web浏览器插件使用的相同)。他们不能使用安装在
/Library/Java/JavaVirtualMachines
(或者其他任何地方)下的JDK,而且他们绝对不能使用Java6

但是,您可以做的不是使用
appbundler
,而是手动构建捆绑包,主要的可执行文件是一个shell脚本,该脚本从
java\u HOME
运行
java\u HOME
命令行工具(如果未设置
java\u HOME
,则可能会返回到
/Library/Internet Plug-Ins
JRE)。这样的脚本将能够支持Java6和Java7

您可以将类似这样的内容用作
YourApp.app/Contents/MacOS/YourApp

#/垃圾箱/垃圾箱
PRG=0美元
而[-h“$PRG”];做
ls=`ls-ld“$PRG”`
link=`expr“$ls”:“^.*->\(.*\)$”2>/dev/null`
如果expr“$link”:“^/”2>/dev/null>/dev/null;然后
PRG=“$link”
其他的
PRG=“`dirname“$PRG”`/$link”
fi
完成
progdir=`dirname“$PRG”`
如果[-n“$JAVA_HOME”];然后
JAVACMD=“$JAVA_HOME/bin/JAVA”
elif[-x/usr/libexec/java_home];然后
JAVACMD=“`/usr/libexec/java_home`/bin/java”
其他的
JAVACMD=“/Library/Internet插件/JavaAppletPlugin.plugin/Contents/Home/bin/java”
fi
exec“$JAVACMD”-类路径“$progdir/。/Resources/Jars/*”\
-Dapple.laf.useScreenMenuBar=true\
my.pkg.main类
然后将应用程序的JAR文件放入
YourApp.app/Contents/Resources/Jars
,图标放入
YourApp.app/Contents/Resources/icon.icns
,以下文件放入
YourApp.app/Contents/Info.plist


CfBundledDevelopmentRegion
英语
Cbundlexecutable
你的应用程序
cfbundlegetingfostring
我聪明的应用程序
循环流化床锅炉
icon.icns
CbundleInfo字典版本
8
CFBundleName
你的应用程序
CbundlePackageType
应用
CFBundleSignature
????
循环流化床锅炉
8
请参阅以获取完整的详细信息,不过请注意,这是一个稍微复杂的情况,因为
.app
脚本委托给另一个脚本,而另一个脚本又从
.app
捆绑包之外的位置加载JAR文件。然而,原则仍然是一样的

usr/libexec/java_home -V
匹配的Java虚拟机(2): 1.8.271.09(x86_64)“Oracle公司”-“Java”/Library/Internet插件/JavaAppletPlugin.plugin/Contents/Home 1.8.0_271(x86_64)“Oracle公司”-“Java SE 8”/Library/Java/JavaVirtualMachine/jdk1.8.0_271.jdk/Contents/Home /库/互联网插件/JavaAppletPlugin.plugin/Contents/Home

当我把我的java_主页设置为

echo export "JAVA_HOME=\$(/usr/libexec/java_home)" >> ~/.bash_profile
一切都定好了 /库/互联网插件/JavaAppletPlugin.plugin/Contents/Home

所以我就这么做了 echo导出“JAVA\u HOME=“Library/JAVA/JavaVirtualMachines/jdk1.8.0\u 271.jdk/Contents/HOME”>>~/.bash\u配置文件

结果是

Admins-MacBook-Pro:carot arun$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home

如果需要,您还可以在将来对其进行编辑 转到您的用户,在我的情况下是arun文件夹 按command+shift+。查看隐藏文件
在您最喜欢的编辑器中打开.bash_profile

我也有一个shell脚本来运行应用程序,但这不是一个选项,因为用户知道如何运行脚本。它应该是一个可单击的应用程序。我应该在JVM运行时参数下我的应用程序的Info.plist中放置什么?如何将其指向JAVA_主页?在安装JAVA的情况下成功运行它在/Library/internetplugins/JavaAppletPlugin.plugin/。刚刚从Info.plist中删除了JVMRuntime参数,而不是设置指向JAVA_HOME的值!@JuricaKrizanic我已经做了更详细的介绍,包括
Info.plist
的必要内容,以使其与JAVA_HOME一起工作感谢@IanRoberts的解释。我扩展了基本shell脚本,并在GitHub上以“universalJavaApplicationStub”()的形式发布。它现在既支持Apple Java 6和Oracle Java 7,也支持应用程序包中Java属性的Info.plist样式(Oracle引入了新的属性键)。请随意使用它!