Java 马科斯莫哈韦(10.14)到狮子(10.7)的爪哇之家在哪里?
Java是macOS最新版本上的可选软件包 然而,一旦安装,就好像JAVA_HOME环境变量没有正确设置,安装了or, 将以下行之一添加到~/.bash_profile文件将相应地设置环境变量Java 马科斯莫哈韦(10.14)到狮子(10.7)的爪哇之家在哪里?,java,macos,Java,Macos,Java是macOS最新版本上的可选软件包 然而,一旦安装,就好像JAVA_HOME环境变量没有正确设置,安装了or, 将以下行之一添加到~/.bash_profile文件将相应地设置环境变量 export JAVA_HOME="$(/usr/libexec/java_home -v 1.6)" or export JAVA_HOME="$(/usr/libexec/java_home -v 1.7)" or export JAVA_HOME="
export JAVA_HOME="$(/usr/libexec/java_home -v 1.6)"
or
export JAVA_HOME="$(/usr/libexec/java_home -v 1.7)"
or
export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"
or simply
export JAVA_HOME="$(/usr/libexec/java_home)"
注意:如果使用brew在mac上安装openjdk,请运行sudo ln-sfn/usr/local/opt/openjdk/libexec/openjdk.jdk/Library/Java/JavaVirtualMachines/openjdk.jdk
,以使上述功能正常工作
更新:添加了基于Jilles van Gurp的-v标志。以上内容对于我使用Amazon的EC2工具不起作用,因为它期望
bin/java
等位于java\u HOME
下面/System/Library/Frameworks/JavaVM.framework/Home确实有效。在Mac OS X Lion上,要设置visualgc运行,我使用了:
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/HOME
/usr/libexec/java_home
不是目录,而是可执行文件。它将当前配置的JAVA_输出到主页,实际上不会更改它。这就是Java Preferences应用程序的用途,在我的例子中,它似乎已经坏了,实际上并没有正确地更改JVM。它确实列出了1.7JVM,但我可以切换/取消切换&拖放我想要的所有内容,而不需要实际更改/usr/libexec/java_home
的输出
即使在Lion上安装了Oracle的1.7.0 u6并将其设置为首选项中的默认值,它仍然返回了apple 1.6 java主页。唯一对我有效的修复方法是手动设置JAVA_HOME:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_06.jdk/Contents/Home/
至少这样,当从命令行运行时,它将使用1.7/usr/libexec/java_home
仍然坚持1.6
更新:对其工作原理有更好的解释
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
就是这样做的。注意,将其更新为1.8很好。更好(更可升级)的方法是使用以下内容:
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
function setjdk() {
if [ $# -ne 0 ]; then
removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
if [ -n "${JAVA_HOME+x}" ]; then
removeFromPath $JAVA_HOME
fi
export JAVA_HOME=`/usr/libexec/java_home -v $@`
export PATH=$JAVA_HOME/bin:$PATH
fi
}
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
setjdk 1.7
这应该也适用于AWS,因为它在家的下面有bin
这个答案与山狮有关,而不是狮子。我需要为AWS命令行工具执行此操作。根据,运行哪个java
返回/usr/bin/java
因此,我在我的.bashrc
中设置了JAVA\u HOME=/usr
显然,/usr/bin/java
是指向/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
的一个符号链接,这使得所有这些都能正常工作
更新
如下面的评论所述,当AWS命令行工具以外的其他工具使用JAVA\u HOME
环境变量时,此JAVA\u HOME
值不是理想的解决方案。不过,对于AWS命令行工具来说,它工作得很好,正如它们的文档中所给出的。对于我,Mountain Lion 10.8.2,大多数人投票的解决方案不起作用。
我通过Oracle和maven从自制软件中安装了JDK1.7
我的解决方案来自hadoop的hadoop-env.sh文件,我也是从自制软件安装的。
我在~/.bash_配置文件中添加了下面的句子,效果很好
export JAVA_HOME="$(/usr/libexec/java_home)"
此解决方案也适用于从Oracle安装Java 1.8的OS X Yosemite。在升级Mac OS后,我也遇到了同样的问题,以下几点对我有效:
cmd>vi~/.bash_配置文件
添加/更新JAVA_HOME的行:
export JAVA_HOME=“/Library/JAVA/JavaVirtualMachines/jdk1.7.0_15.jdk/Contents/HOME”
cmd>source~/.bash_配置文件或打开新终端
我认为jdk版本可能有所不同,因此只需使用您在/Library/Java/JavaVirtualMachines/下的版本即可。较新的Oracle JVM(如1.7.0_21-b12)似乎安装在这里:
/Library/Internet\plugins/JavaAppletPlugin.plugin/Contents/Home
我的方法是:
巴什尔先生
export JAVA6_HOME=`/usr/libexec/java_home -v 1.6`
export JAVA7_HOME=`/usr/libexec/java_home -v 1.7`
export JAVA_HOME=$JAVA6_HOME
# -- optional
# export PATH=$JAVA_HOME/bin:$PATH
这使得在Mac OS X 10.9的J6和J7之间切换非常容易。我从Oracle安装了最新版本的JRE,然后将JAVA_HOME重置为/Library/JAVA/JavaVirtualMachine/jdk1.7.0_45.jdk/Contents/HOME
我相信有更好的方法,但它让我振作起来
hughsmac:~hbrien$echo$javau HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home对于OS X,您可以执行以下操作:
export JAVA_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/Current/commands/java_home`
以下几点对我有用。我在OSX Yosemite上使用ZSH,安装了Java8
以下命令/usr/libexec/java_home
发出到JDK home的路径:
/Library/Java/JavaVirtualMachines/jdk1.8.0\u 05.jdk/Contents/Home
在您的~/.zshrc
中
export JAVA_HOME = "/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home"
如果您需要在MacOSX(Yosemite)下拥有多个版本的JDK,那么添加一些脚本以在它们之间自动切换可能会有所帮助
您要做的是编辑您的~/.bash\u配置文件,并添加以下内容:
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home
function setjdk() {
if [ $# -ne 0 ]; then
removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
if [ -n "${JAVA_HOME+x}" ]; then
removeFromPath $JAVA_HOME
fi
export JAVA_HOME=`/usr/libexec/java_home -v $@`
export PATH=$JAVA_HOME/bin:$PATH
fi
}
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
setjdk 1.7
脚本所做的是首先删除路径中的其他JDK版本,这样它们就不会干扰我们的新JDK版本。然后它巧妙地使用了/usr/libexec/java_home,这是一个列出已安装JDK版本的命令。-v参数告诉java_home返回带有所提供版本的JDK路径,例如1.7。我们还更新路径以指向新找到的JAVA_HOME目录的bin目录。最后,我们可以使用
setjdk 1.7
选择最新安装的JDK版本的1.7分支。要选择特定的版本,只需执行
setjdk 1.7.0_51
相反。运行/usr/libexec/java_home-V获取有关如何选择版本的更多详细信息
另外,保存后不要忘记source~/.bash_profile。OSX Yosemite、ZSH和Java SE运行时环境8,我必须:
$sudo ln-s/System/Library/Framework
$ ls -ltar /usr/bin/java
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.7.0_xx.jdk/Contents/Home
//This command will open the file using vim
$ vim ~/.bash_profile
export JAVA_HOME=$(/usr/libexec/java_home)
$ source ~/.bash_profile
$ echo $JAVA_HOME
set -U JAVA_HOME (/usr/libexec/java_home)
/Applications/NetBeans/NetBeans 8.2.app/Contents/Resources/NetBeans/etc/netbeans.conf
netbeans_jdkhome="path/to/jdk"
netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"
export JAVA_HOME=$(/usr/libexec/java_home)
$JAVA_HOME/bin/java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)
set -Ux JAVA_8 (/usr/libexec/java_home --version 1.8)
set -Ux JAVA_12 (/usr/libexec/java_home --version 12)
set -Ux JAVA_HOME $JAVA_8 //or whichever version you want as default
/usr/libexec/java_home -v 11