我安装了从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没有出现?
Ans: OK, the problem has been resolved. Here is the answer: I found that my Terminal has a .bash_profile and the java home variable is set to 1.6
export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home"
因此,每次打开新的终端窗口时,这都会导致问题 . 只需删除此行即可解决问题 . 您仍然需要遵循@aleroot所说的内容,但如果这对您不起作用,请检查.bash_profile(或.bashrc)设置文件以查看您之前是否已导出任何Java版本 .
24 回答
对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中:
Oracle的安装程序将java放在
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin
中 . 并且它不会覆盖/usr/bin/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
:我通过重新安装Yosemite解决了这个问题,然后在终端(java -version)和(javac -version)上交叉检查java版本 . 它现在工作得很好 . 它不会更改为java 7,因为版本6仍然存在(命令n) libray> java> javavirtualmachine>你的javac当前版本 . 你需要解决java home .
自El Capitan以来,由于引入了新的"rootless"政策,很难删除
/usr/bin/java
符号链接 .因此,我只是将最新的java版本(在我的情况下,这是
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin
)的路径添加到我的.bashrc
文件中的PATH
:要为当前会话重新加载
.bashrc
文件,请在shell中运行source ~/.bashrc
. 您只需对更改.bashrc
文件之前已启动的会话执行此操作 .现在使用最新版本,在shell中使用
java
.我做到了
并修复了我的Java 8问题 .
之前:
后:
vi ~/.bash_profile
加
export JAVA_HOME=
/usr/libexec/java_home -v 1.7``这告诉你的
/usr/bin/java
链接目标使用安装的最新Java 7包/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开始,上述解决方案工作正常
这是因为您的.bash_profile没有反映更改 . 要反映它,只需使用以下命令
因为您需要输入Java Preferences窗格并以这种方式仅标记JVM 7:
要在Mac OS X中轻松快速地打开 Java Preferences 窗格,只需使用⌘ + SPACE调用聚光灯,然后键入系统首选项,它将显示在窗口的最后一行 .
就我而言,问题在于Oracle正在将其安装到与以前不同的位置 .
从Oracle下载:http://java.com/en/download/mac_download.jsp?locale=en
通过查看System Prefs验证它是否已正确安装:
命令空间打开Spotlight,输入'System Preferences',按回车键 .
单击底行中的Java图标 . Java控制面板打开后,单击'Java'选项卡,'View...',并验证您的安装是否有效 . 你也可以看到'Path',如果它们与我的不同,你可以将它们放到下面的命令中 .
验证版本是否符合您的预期(根据需要在路径中显示):
/ Library / Internet \ Plug-Ins / JavaAppletPlugin.plugin / Contents / Home / bin / java -version
sudo ln -fs / Library / Internet \ Plug-Ins / JavaAppletPlugin.plugin / Contents / Home / bin / java / usr / bin / java
java -version
对我来说,最简单,最干净的方法是使用自制软件安装Java,如下所述:
https://stackoverflow.com/a/28635465
您可以在终端中执行以下命令:
而这将取代旧的Java旧版本 .
安装JDK 7,这个问题将自行解决 .
一定要获得包含编译器和类似内容的Java Development Kit(JDK),而不仅仅是Java Runtime Environment(JRE) .
由于我没有遇到这个问题,我正在采取预感 -
你能试试这个:
软链接“java_home”指向哪里:
输出:( Stunted)lrwxr-xr-x java_home - >/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home
** ls -lrt /System/Library/Frameworks/JavaVM.framework/Versions我的MAC产生以下内容:
基于此,我们可能会得到进一步的提示吗?
http://www.java.com/en/download/faq/java_mac.xml是一个值得理解的好地方,而Apple正停止对Java的支持,为什么Java Preferences不再存在,依赖于System_Preferences => Java => Java,如果安装了Oracle的Java 7 .
简单解决方案
我用
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现在以"rootless"模式保护某些系统目录(a.k.a.系统完整性保护) . 它适用于macOS Sierra,并且在可预见的未来可能是新的macOS版本 .基本问题:
/usr/bin/java
指向最初由OSX本身提供的一个(/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
)我们需要将其指向JDK安装程序下载的那个 . 以下步骤适用于OSX 10.10.4 Yosemite .打开系统首选项 - >选择Java . Java窗口打开 .
单击顶部的Java选项卡 . 单击'View'按钮 .
Java Runtime Environment Settings选项卡打开如下:
双击
Path
项并复制路径(cmd c) . 这是JDK安装程序/更新程序安装的最新版本 . 就我而言,路径是/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
打开终端 . 在这一步中,我们将系统java二进制文件指向(符号链接,
ln -s
命令)到我们在上一步中发现的最新版本 . 运行以下命令:sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin/java
而已 . 要验证,您只需在终端上运行
java -version
即可 . 它应该输出您安装/更新的最新版本 .如果您的计算机上有多个Java版本,并且您想在运行时动态选择它,即在我的情况下,我有两个版本:
您可以通过修改/ etc / profile内容来更改它们 . 只需在文件末尾添加(或修改)以下两行:
在我的情况下,如果我想使用它应该像下面这样:
Java 7:
Java 8:
保存文件后, please run
source /etc/profile
应该可以正常工作 . 当我相应地使用第一个和第二个选项时,结果如下:Java 7:
Java 8:
如果您的java文件夹位于不同的位置,则该过程类似 .
我想你可以尝试安装jdk而不是jre . 通过安装jdk,将替换/ usr / bin / java中的java,并且所有库都可以正常工作 .
您可以运行此命令来查找/ Library / Internet Plugins /下的Java版本:
我建议你看一下这个工具Jenv
这将允许您在已安装的JVM之间随时切换 .
简单地说:
然后用于测试目的:
而且你有更多的命令可用 .
我遇到了类似的问题,终端没有更新java版本以匹配mac上安装的版本 .
设置JAVA_HOME环境变量没有问题
我想出了一个暂时的,有点痛苦但有效的解决方案 .
在你.bash_profile中添加以下行:
(这是我的机器上的路径,但可能与您的路径不同,请确保获取您的路径 . 路径应匹配/ Library / Java / JavaVirtualMachines /)
运行
source ~/.bash_profile
正如我所提到的,这是一个临时的创可贴解决方案,因为java主路径是硬编码的 . 实际上没有办法设置获取最新版本的路径,因为苹果应该已经为终端做了什么,问题是Apple的java_home环境变量没有得到更新 .
这太疯狂了! Oracle如何提供不安装任何东西的安装程序!?
无论如何对我来说是:
1.8.0_31是你安装的java版本...
从Oracle站点通过分布式JDK DMG进行安装,为我自动更新所有内容 . 我已经看到(在El Capitan中)更新
System Preferences > Java
做更新,但不反映到命令行 . 通过DMG安装可以完成这项工作 .