![](/img/trans.png)
[英]After Installing Java JDK 7 For Mac OS X - mvn -version still shows java version 1.6.0_31
[英]Installed Java 7 on Mac OS X but Terminal is still using version 6
我已经安装了从 oracle 网站下载的 JDK 7u7。 但是安装后终端还是显示java version 6
$java -version
java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10-428-11M3811)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01-428, mixed mode)
知道为什么 java 7 没有出现吗?
答:好的,问题已经解决。 答案如下:我发现我的终端有一个 .bash_profile 并且 java home 变量设置为 1.6
export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home"
所以这是每次我打开一个新的终端窗口时导致问题的行。 只需删除此行即可解决问题。 您仍然需要遵循@aleroot 所说的,但如果这对您不起作用,请检查 .bash_profile(或 .bashrc)设置文件以查看您之前是否导出过任何 Java 版本。
Oracle 的安装程序将 java 放在/Library/Internet Plug-Ins/JavaAppletPlugin.plugin
。 它不会覆盖/usr/bin/java
。 所以,如果你发出一个
whereis java
在终端中,它将返回 /usr/bin/java。 (它又指向/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java
,这是 Apple 的 1.6 版本)。
因此,如果您想使用新的 Java 版本,请替换/usr/bin/java
符号链接,使其指向/Library/Internet\\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
:
sudo rm /usr/bin/java
sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin
安装JDK 7 ,这个问题会自行解决。
请务必获取包含编译器和类似内容的 Java 开发工具包 (JDK),而不仅仅是 Java 运行时环境 (JRE)。
vi ~/.bash_profile
添加
export JAVA_HOME=`/usr/libexec/java_home -v 1.7`
这会告诉您的/usr/bin/java
链接目标使用安装在
/Library/Java/JavaVirtualMachines/
所以对于 JDK 1.7.0_17
JAVA_HOME
将是:
/Library/Java/JavaVirtualMachines/jdk1.7.0_17.jdk/Contents/Home
注意:最近这方面发生了很多变化,将 Mac OS X 从 Appels 自己的系统集成 Java 包转移到基于 Oracle 的 Java 包。 从 Mac OS X 10.8.2 开始,上述解决方案运行良好
因为您需要在 Java Preferences 窗格中输入并以这种方式仅标记 JVM 7:
要在 Mac OS X 中轻松快速地打开Java 首选项窗格,您只需使用⌘ +空格键调用聚光灯并键入系统首选项,它将显示在窗口的最后一行。
就我而言,问题是 Oracle 将其安装到与我习惯的位置不同的位置。
从 Oracle 下载: http : //java.com/en/download/mac_download.jsp?locale=en
通过查看系统首选项来验证它是否已正确安装:
验证版本是否符合您的预期(根据需要在您的路径中添加):
/Library/Internet\\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -version
创建从 /usr/bin/java 到新安装的链接
sudo ln -fs /Library/Internet\\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin/java
健全性检查您的版本:
版本
我遇到了类似的问题,终端没有更新 java 版本以匹配 mac 上安装的版本。
设置 JAVA_HOME 环境变量没有问题
我想出了一个临时的、有点痛苦但有效的解决方案。
在您的 .bash_profile 中添加以下行:
export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home"
(这是我机器上的路径,但在你的机器上可能会有所不同,请确保获取你的路径。路径应与 /Library/Java/JavaVirtualMachines/ 匹配)
运行source ~/.bash_profile
正如我提到的,这是一个临时的创可贴解决方案,因为 Java 主路径是硬编码的。 真的没有办法设置获取最新版本的路径,因为这就是苹果应该为终端做的事情,问题是苹果的 java_home 环境变量没有得到更新。
自 El Capitan 以来,由于引入了新的“无根”策略,很难删除/usr/bin/java
符号链接。
因此,我只是将最新 java 版本的路径(在我的例子中是/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin
)添加到我的.bashrc
文件的PATH
中:
# Use latest java version
export PATH=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH
要为当前会话重新加载.bashrc
文件,请在 shell 中运行source ~/.bashrc
。 您只需对更改.bashrc
文件之前已启动的会话执行此操作。
现在使用最新版本,当你在shell中使用java
时。
更新
brew tap adoptopenjdk/openjdk
brew cask install adoptopenjdk/openjdk/adoptopenjdk8
https://stackoverflow.com/a/28635465
旧版本对我来说,最简单、最干净的方法是使用 homebrew 安装 Java,如下所述:
https://stackoverflow.com/a/28635465
brew update
brew cask install java
您可以在终端中执行以下命令:
export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
这用新的代替了旧的java。
基本问题: /usr/bin/java
最初指向 OSX 本身提供的一个( /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
)我们需要将其指向由JDK 安装程序。 以下步骤适用于 OSX 10.10.4 Yosemite。
Path
项并复制路径(cmd+c)。 这是 JDK 安装程序/更新程序安装的最新版本。 就我而言,路径是/Library/Internet\\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
ln -s
命令)系统 java 二进制文件指向我们在上一步中发现的最新版本。 运行以下命令: sudo ln -s /Library/Internet\\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin/java
而已。 要进行验证,您只需在终端上运行java -version
。 它应该输出您安装/更新到的最新版本。
我做了
export JAVA_HOME=`/usr/libexec/java_home`
这解决了我的 Java 8 问题。
前:
java version "1.6.0_31"
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)
后:
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
http://www.java.com/en/download/faq/java_mac.xml是一个很好理解的地方,而 Apple 正在停止对 Java 的支持,为什么 Java Preferences 不再存在并依赖 System_Preferences => Java = > 如果安装了 Oracle 的 Java 7,则为 Java。
我建议你看看工具Jenv
这将允许您随时在已安装的 JVM 之间切换。
简单来说:
jenv global oracle-1.7
然后稍后用于测试目的:
jenv global oracle-1.6
而且您还有更多可用的命令。
对 JAVA_HOME 路径进行硬编码可能不是最好的主意。 /usr/libexec/java_home
实用程序在 Mac OSX Lion 10.7.5 和 JDK 1.7.0_13 上适用于我。 根据其手册页,它旨在与 Apple 的旧 Java 首选项窗格一起使用,但它似乎与 Oracle(Java 控制面板)提供的替代品一起使用。 例如,运行/usr/libexec/java_home -V
列出我机器上所有已安装的 JDK(1.6.* 和 1.7.*)。
因此,正如在其他线程中所讨论的(例如, 我应该在 OSX上将JAVA_HOME 设置为什么),我仍然建议将以下行添加到您的 .bash_profile 中:
export JAVA_HOME=$(/usr/libexec/java_home)
这太疯狂了! Oracle 如何提供不安装任何东西的安装程序!?
反正对我来说是:
sudo rm /usr/bin/java
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre/bin/java /usr/bin/java
其中 1.8.0_31 是您安装的 Java 版本...
如果您的机器上有多个 Java 版本并且您想在运行时动态选择它,即,就我而言,我有两个版本:
ls -la /Library/Java/JavaVirtualMachines
drwxr-xr-x 3 root wheel 96B Nov 16 2014 jdk1.7.0_71.jdk/
drwxr-xr-x 3 root wheel 96B Mar 1 2015 jdk1.8.0_31.jdk/
您可以通过修改 /etc/profile 内容来更改它们。 只需在文件末尾添加(或修改)以下两行:
export JAVA_HOME=YOUR_JAVA_PATH/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
在我的情况下,如果我想使用它应该如下所示:
爪哇7:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
爪哇 8:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
保存文件后,请运行source /etc/profile
,它应该可以工作。 以下是我相应地使用第一个和第二个选项时的结果:
爪哇7:
java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
爪哇 8:
java -version
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
如果您的 java 文件夹位于不同的位置,则过程类似。
export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
我想你可以尝试安装 jdk 而不是 jre。 通过安装 jdk,/usr/bin/java 中的 java 将被替换,并且所有库都可以正常工作。
如果您安装了 Homebrew,您可以安装java-switcher以更快地更改 Java 默认版本
brew tap andycillin/tap
brew install java-switcher
然后您可以只使用一个命令来切换您的默认 Java 版本。
java-switcher 1.7
要么
java-switcher 10
这是因为您的 .bash_profile 没有反映更改。要反映它,只需使用以下命令
$ source .bash_profile
您可以运行此命令来查找 /Library/Internet Plugins/ 下的 Java 版本:
defaults read /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Info.plist CFBundleVersion
由于我没有遇到过这个问题,我有预感-
你能试试这个吗:
软链接“java_home”指向哪里:
ls -lrt /usr/libexec/java_home
输出:(发育不良)lrwxr-xr-x java_home -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home
**ls -lrt /System/Library/Frameworks/JavaVM.framework/Versions 我的 MAC 产生以下内容:
lrwxr-xr-x CurrentJDK ->
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents**
lrwxr-xr-x Current -> A
lrwxr-xr-x 1 root wheel 10 Oct 18 14:39 1.6.0 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 18 14:39 1.6 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 18 14:39 1.5.0 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 18 14:39 1.5 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 18 14:39 1.4.2 -> CurrentJDK
lrwxr-xr-x 1 root wheel 10 Oct 18 14:39 1.4 -> CurrentJDK
基于此,我们可能会得到进一步进行的提示?
我通过重新安装 Yosemite 解决了这个问题,然后在终端 (java -version) 和 (javac -version) 上交叉检查 java 版本。 ) libray>java>javavirtualmachine>您的 javac 当前版本。您需要寻址到 java home 。
我用sudo rm /usr/bin/java
解决了这个问题
我下载并安装了最后一个 Java SE 运行时环境: http : //www.oracle.com/technetwork/java/javase/downloads/index.html
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/jre/bin/java /usr/bin/java
对我不起作用,因为我得到Operation not permitted
。 El Capitan 现在以“无根”模式(又名系统完整性保护)保护某些系统目录。 它适用于 macOS Sierra,并且在可预见的未来可能适用于新的 macOS 版本。
从 Oracle 站点通过分布式 JDK DMG 进行安装会自动更新我的所有内容。 我已经看到(在 El Capitan 中)通过System Preferences > Java
进行更新,但不会反映到命令行。 通过 DMG 安装可以完成这项工作。
检查安装的JDK版本:
$ ls /Library/Java/JavaVirtualMachines/
jdk-11.0.2.jdk jdk1.8.0_91.jdk
现在在您的~/.bashrc
导出JAVA_HOME
指定版本:
if [ -e /usr/libexec/java_home ]; then
export JAVA_HOME=$(/usr/libexec/java_home -v 11)
fi
获取 bashrc 文件,Java 版本将更新:
$ java -version
java version "11.0.2" 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)
在 bash 中:
vim ~/.bash_profile
添加
export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
:wq
保存java -version
但实际上这条路径指向jre而不是jdk。
如果要指向JDK的路径,则需要
PATH="/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk"
,您可以转到/Library/Java/JavaVirtualMachines
以确保您已经安装了您期望的 JDK 版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.