我安装了从oracle网站下载的JDK 7u7。但安装后,终端仍然显示java版本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版本。
答案 0 :(得分:295)
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
答案 1 :(得分:113)
安装JDK 7,此问题将自行解决。
确保获得包含编译器和类似内容的Java Development Kit(JDK),而不仅仅是Java Runtime Environment(JRE)。
答案 2 :(得分:103)
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自己的System集成Java包迁移到基于Oracle的Java包。从Mac OS X 10.8.2起,上述解决方案工作正常
答案 3 :(得分:64)
因为您需要输入Java Preferences窗格并以这种方式仅标记JVM 7:
要在Mac OS X中轻松快速地打开 Java首选项窗格,您只需使用⌘ + SPACE < / kbd>并键入系统偏好设置它将显示在窗口的最后一行。
答案 4 :(得分:56)
就我而言,问题在于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 -version
答案 5 :(得分:32)
我遇到了类似的问题,终端没有更新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主路径是硬编码的。实际上没有办法设置获取最新版本的路径,因为苹果应该已经为终端做了什么,问题是Apple的java_home环境变量没有得到更新。
答案 6 :(得分:27)
自从El Capitan以来,很难删除/usr/bin/java
符号链接,因为引入了新的&#34;无根&#34;政策。
因此,我只是将最新的java版本(在我的情况下,这是/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin
)的路径添加到PATH
文件中的.bashrc
:
# Use latest java version
export PATH=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH
要为当前会话重新加载.bashrc
文件,请在shell中运行source ~/.bashrc
。您只需对更改.bashrc
文件之前已启动的会话执行此操作。
现在,在shell中使用java
时会使用最新版本。
答案 7 :(得分:21)
对我来说,最简单,最干净的方法是使用自制软件安装Java,如下所述:
https://stackoverflow.com/a/28635465
brew update
brew cask install java
答案 8 :(得分:12)
基本问题:/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
在终端上。它应该输出您安装/更新的最新版本。
答案 9 :(得分:11)
您可以在终端中执行以下命令:
{{1}}
这将用旧的替换java old。
答案 10 :(得分:10)
我做了
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)
答案 11 :(得分:7)
http://www.java.com/en/download/faq/java_mac.xml是一个值得理解的好地方,而Apple正在停止对Java的支持,为什么Java Preferences不再存在并且依赖于System_Preferences =&gt; Java =&gt;如果安装了Oracle的Java 7,则为Java。
答案 12 :(得分:7)
我建议您查看工具Jenv
这将允许您在已安装的JVM之间随时切换。
简单地说:
jenv global oracle-1.7
然后出于测试目的:
jenv global oracle-1.6
你可以获得更多命令。
答案 13 :(得分:6)
这是疯了! 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版本......
答案 14 :(得分:6)
对JAVA_HOME路径进行硬编码可能不是最好的选择。 /usr/libexec/java_home
实用程序在Mac OSX Lion 10.7.5和JDK 1.7.0_13上适用于我。根据其手册页,它可以与Apple旧的Java Preferences窗格一起使用,但它似乎与Oracle(Java控制面板)提供的替代品一起使用。例如,运行/usr/libexec/java_home -V
会在我的计算机上列出所有已安装的JDK(1.6。*和1.7。*)。
因此,正如其他主题(例如What should I set JAVA_HOME to on OSX)中所讨论的那样,我仍然建议将以下行添加到.bash_profile中:
export JAVA_HOME=$(/usr/libexec/java_home)
答案 15 :(得分:5)
export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH"
答案 16 :(得分:4)
如果您的计算机上有多个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
在我的情况下,如果我想使用它,它应该如下所示:
Java 7:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
Java 8:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
保存文件后,请运行 source /etc/profile
,它应该有效。当我相应地使用第一个和第二个选项时,结果如下:
Java 7:
java -version
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
Java 8:
java -version
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
如果您的java文件夹位于不同的位置,则该过程类似。
答案 17 :(得分:3)
我认为你可以尝试安装jdk而不是jre。通过安装jdk,将替换/ usr / bin / java中的java,并且所有库都可以正常工作。
答案 18 :(得分:1)
这种情况正在发生,因为您的.bash_profile没有反映更改。要反映它,只需使用以下命令
$ source .bash_profile
答案 19 :(得分:1)
您可以运行此命令来查找/ Library / Internet Plugins /下的Java版本:
defaults read /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Info.plist CFBundleVersion
答案 20 :(得分:0)
如果已安装Homebrew,则可以安装 java-switcher 以更快地更改Java默认版本
brew tap andycillin/tap
brew install java-switcher
然后,您只需使用一个命令即可切换默认Java版本。
java-switcher 1.7
或
java-switcher 10
答案 21 :(得分:0)
检查已安装的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)
答案 22 :(得分:0)
在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版本。答案 23 :(得分:0)
从Oracle站点通过分布式JDK DMG安装会自动为我更新所有内容。我已经看到(在El Capitan中)通过System Preferences > Java
进行更新会进行更新,但这并不能反映到命令行。通过DMG安装即可完成工作。
答案 24 :(得分:0)
我解决了这个问题
sudo rm /usr/bin/java
我下载并安装了最后一个Java SE Runtime Environment: 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版本。
答案 25 :(得分:0)
我通过重新安装Yosemite解决了这个问题,然后在终端(java -version)和(javac -version)上交叉检查java版本。它现在工作得很好。它不会更改为java 7,因为版本6仍然存在(命令+ n)libray&gt; java&gt; javavirtualmachine&gt;你的javac当前版本。你需要解决java home。
答案 26 :(得分:0)
由于我没有遇到这个问题,我正在采取预感 -
请你试试这个:
软链接“java_home”指向哪里:
ls -lrt /usr/libexec/java_home
输出:(发育不良) lrwxr-xr-x java_home - &gt; /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
基于此,我们可能会得到进一步的提示吗?