Java 马科斯莫哈韦(10.14)到狮子(10.7)的爪哇之家在哪里?

Java 马科斯莫哈韦(10.14)到狮子(10.7)的爪哇之家在哪里?,java,macos,Java,Macos,Java是macOS最新版本上的可选软件包 但一旦安装,JAVA_HOME环境变量似乎设置不正确。如果安装了or, 将以下行之一添加到~/.bash_概要文件将相应地设置环境变量 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/

Java是macOS最新版本上的可选软件包

但一旦安装,JAVA_HOME环境变量似乎设置不正确。

如果安装了or, 将以下行之一添加到~/.bash_概要文件将相应地设置环境变量

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工具不起作用,因为它需要java_HOME下面的bin/java等/System/Library/Frameworks/JavaVM.framework/Home确实有效。

在Mac OS X Lion上,为了设置visualgc运行,我使用了:

导出JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/HOME /usr/libexec/java_home不是一个目录,而是一个可执行文件。它将当前配置的JAVA_输出到主页,实际上不会更改它。这就是Java Preferences应用程序的用途,在我的例子中,它似乎已经坏了,实际上并没有正确地更改JVM。它确实列出了1.7JVM,但我可以切换/untoggle&拖放我想要的所有内容,而不需要实际更改/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,因为它在家的下面有垃圾桶

这个答案与山狮有关,而不是狮子。我需要为AWS命令行工具执行此操作。根据,运行哪个java返回/usr/bin/java

因此,我在我的.bashrc中设置了JAVA_HOME=/usr

显然,/usr/bin/java是指向/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java的符号链接,这使得所有这些都可以工作

更新


如下面的评论所述,当JAVA_HOME环境变量将由AWS命令行工具以外的其他工具使用时,此JAVA_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的行: 导出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_05.jdk/Contents/Home

在~/.zshrc中


如果您需要在Mac OS X Yosemite下拥有多个JDK版本,那么添加一些脚本以在它们之间自动切换可能会有所帮助

您要做的是编辑~/.bash_配置文件并添加以下内容:

/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_主目录的bin目录。最后,我们可以使用

setjdk 1.7
选择最新安装的JDK版本的1.7分支。要选择特定的版本,只需执行

setjdk 1.7.0_51
相反。运行/usr/libexec/java_home-V以获取有关如何选择版本的更多详细信息


另外,保存~/.bash_配置文件后,请不要忘记对其进行源代码生成。

OSX Yosemite、ZSH和Java SE运行时环境8,我必须:

$sudo ln-s/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/System/Library/Frameworks/JavaVM.framework/Versions/Current/bin

在~/.zshrc中将JAVA_HOME更改为 为mac用户导出JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/Current

。 Java8应该添加

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
# JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
java 6:

export JAVA_HOME=`/usr/libexec/java_home -v 1.6`
# JAVA_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
参考:

对于Mac Yosemite

JDK 1.7.0_xx正在使用

$ 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

上面的答案对我都没有帮助。我想所有的答案都是针对较旧的OSX的

对于OS X Yosemite 10.10,请执行以下步骤

使用您喜爱的文本编辑器打开:~/.bash\u配置文件

在文件中添加以下行并保存它:后跟x表示vim:

export JAVA_HOME=$(/usr/libexec/java_home)
然后在终端中键入以下两个命令以查看输出:

$ source ~/.bash_profile

$ echo $JAVA_HOME

在第二行中,您正在更新.bash_配置文件的内容。

从澳大利亚税务局ATO使用AUSKEY的任何人都应该卸载AUSKEY。 这解决了我的JAVA_家庭问题


MAC用户也不再需要它。耶

更新Java 9和一些整洁的别名

在.bash_配置文件中:

导出JAVA_HOME8=`/usr/libexec/JAVA_home-version 1.8` 导出JAVA_HOME9=`/usr/libexec/JAVA_home-version 9` 请注意,对于最新版本,它是9,而不是1.9

设置活动Java:

导出JAVA\u HOME=$JAVA\u HOME8 导出路径=$JAVA_HOME/bin:$PATH 在不同版本之间切换的一些附加别名:

别名j8='export JAVA\u HOME=$JAVA\u HOME8;导出路径=$JAVA_HOME/bin:$PATH' 别名j9='export JAVA\u HOME=$JAVA\u HOME9;导出路径=$JAVA_HOME/bin:$PATH' 终端测试:

%j8 %java版本 java版本1.8.0_121 JavaTM SE运行时环境构建1.8.0_121-b13 Java HotSpotTM 64位服务器VM构建25.121-b13,混合模式 %j9 %java版本 java版本9 JavaTM SE运行时环境构建9+181 Java HotSpotTM 64位服务器VM构建9+181,混合模式 编辑:Java10的更新

导出JAVA_HOME10=`/usr/libexec/JAVA_home-version 10` 别名j10='export JAVA\u HOME=$JAVA\u HOME10;导出路径=$JAVA_HOME/bin:$PATH' 编辑:Java11的更新

导出JAVA_HOME11=`/usr/libexec/JAVA_home-version 11` 别名j11='export JAVA_HOME=$JAVA_HOME11;导出路径=$JAVA_HOME/bin:$PATH' 我在High Sierra 10.13.4上使用shell,并通过Brew安装Java

它不是自动设置的,因此要在我运行的系统上设置它:

set -U JAVA_HOME (/usr/libexec/java_home)

只需在netbeans.conf文件中设置1.8 jdk版本的java_主页:

取消注释行:

netbeans_jdkhome="path/to/jdk"
并设置1.8 jdk的路径,在我的例子中:

netbeans_jdkhome="/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home"

这种方法使您可以在macOS Mojave 10.14.1和JAVA 11.0.1的macOS上拥有多个jdk版本 我将配置文件设置为

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)

我必须明确地将它设置为Macbook air上的确切路径

以下步骤:

尝试回显$JAVA_HOME如果设置了,它将显示路径,如果没有,尝试使用sudo find/usr/-name*jdk搜索它 使用-sudo nano~/.Bash_配置文件编辑Bash p 使用上面步骤2中的路径添加到JAVA Home的确切路径 导出JAVA_HOME=/Library/JAVA/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/HOME 保存并退出 使用-echo$JAVA\u Home检查JAVA\u Home
我在Macbook Air上运行MACOS MOJAVE-10.14.2 18C54,并带有JAVA 8,适用于Mac上的Fish终端用户我相信它也可以在Linux上使用,这应该可以工作:

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

对于Java 11 JDK 11,可以使用以下命令找到它:

/usr/libexec/java_home -v 11

很高兴知道。我不得不说,我对《狮子》的特写列表不太感兴趣。在我的使用中,似乎没有太多的增强功能……这对我不起作用/System/Library/Frameworks/JavaVM.framework/Home-worked.也适用于Maverick!为什么/usr/libexec/java_home-V没有显示我刚刚安装的java 1.8,并且可以在/Library/Internet plugins/JavaAppletPlugin.plugin/Contents/home/binforjava 11和High Sierra,export java_home=$/usr/libexec/java_home-V 11I没有收到你的建议:这与export java_home=/usr/libexec/java_home有何不同?命令/usr/libexec/java_home返回/System/Library/java/JavaVirtualMachines/1.6.0.jdk/Contents/homeforvisualgc/usr/libexec/java_home:在:/usr/libexec/java_home找到的java.exe不在jdk目录中。请设置并导出JVMSTAT_JAVA_HOME环境变量,以引用包含Sun J2SE 1.5.0 JDK而非JRE的目录,然后重试。是否为lion?你是从苹果公司得到正式的Java软件包,还是从Oracle得到Java6/7?我相信这是苹果公司的Java软件包。@AndrewH是的,我发现也是这样。安装了Apple的Java包并发现了实际的库路径,例如,在eclipse.ini:/Sy中设置-vm

stem/Library/Java/Support/Deploy.bundle/Contents/Home/lib/javaws.jar感谢您提供的信息。也许我太简单了,但是为什么OSX会把这么简单的事情弄得一团糟呢?我有点不同意那种说法:更可升级的/usr/libexec/java_home是一个返回路径的exe,而不是一个固定路径。除了取决于您使用的jvm版本之外,上面的路径也不匹配。重点是,/usr不是正确的JAVA_主目录。可以定位bin/java。但是有时候,构建者ant使用JAVA_HOME引用lib/tools.jar中的javac编译器,您的解决方案将因thoseAh而失败,感谢您提供的信息。你是对的。将更新答案。如果您从苹果安装了Java6,它会起作用。这里的要点是您使用的是oracle java 7。这对我来说在Mavrick上非常有效,但是java_主脚本的位置不同。export JAVA_HOME=$/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/JAVA_HOME我试图在mac Yosemite上安装maven,这种设置JAVA_HOME的方法对我有效。在Sierra 10.12和JAVA 8上对我有效-而且/usr/libexec/JAVA_HOME工具对这些JAVA版本返回一个错误。这是下载v1.7 JRE后对我有效的唯一答案。这是安装JRE的路径。大多数评分答案和评论都是关于JDK的。不一样。@Adonissum你找到解决方案了吗?在新安装的Mavericks上,这是唯一对我有效的解决方案。必须按照建议将sqldeveloper指向位于此处的jdk主页才能使其工作。注意,HFS+不区分大小写。这与建议的解决方案有何不同?与建议的解决方案没有什么不同。此解决方案专门针对使用ZSH、Java 8和OSX Yosemite的用户。确认在OSX Yosemite上安装了Java 1.8,效果很好,干杯,伙计。一般解决方案对Java 8、ZSH和Yosemite都很好。我想我得到了你的pb-你使用引号而不是反引号'vs`不,我使用了正确的引号,而不是尝试了复制粘贴,它不起作用。我更新了我的答案,因为它对我有用。@OlivierRefalo我可以看到你用双引号更新了你的答案。但即使没有引用,它也能起作用。非常感谢。在约塞米蒂10.10这是唯一有效的解决方案。通过任何其他解决方案添加路径,将临时添加,直到终止终端,路径消失。要永久添加,路径必须保存在.bash_配置文件中。同时,为了简单起见,我使用了nano而不是vim。你能添加更多信息使这个答案变得有用吗。Mac Sierra I've/Library/Java/JavaVirtualMachines上可能存在重复,它有jdk和System Preferences>Java这两个版本之间有什么不同?不同的问题,谢谢,不要低估Java安装没有正确完成的可能性。如果以下建议都不管用,请尝试[重新]安装!blog.hgomez.net/2012/07被破坏了,但在现在链接到export JAVA_HOME=/usr/libexec/JAVA_HOME-v1.8Works的答案中已经修复。泰
/usr/libexec/java_home -v 11