Installed Java 7 on Mac OS X but Terminal is still using version 6
我安装了从oracle网站下载的JDK 7u7。 但安装后,终端仍然显示java版本6
1 2 3 4 | $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
1 | export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home" |
因此,每次打开新的终端窗口时,这都会导致问题。
只需删除此行即可解决问题。 您仍然需要遵循@aleroot所说的内容,但如果这对您不起作用,请检查.bash_profile(或.bashrc)设置文件以查看您之前是否已导出任何Java版本。
Oracle的安装程序将java放在
1 | whereis java |
在终端中,它将返回/ usr / bin / java。 (反过来指向
因此,如果您想使用新的Java版本,请替换
1 2 | sudo rm /usr/bin/java sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin |
安装JDK 7,这个问题将自行解决。
一定要获得包含编译器和类似内容的Java Development Kit(JDK),而不仅仅是Java Runtime Environment(JRE)。
加
这告诉您的
因此对于JDK
注意:最近这个领域发生了很多变化,将Mac OS X从Appels自己的System集成Java包转移到基于Oracle的Java包。从Mac OS X 10.8.2开始,上述解决方案工作正常
因为您需要输入Java Preferences窗格并以这种方式仅标记JVM 7:
要在Mac OS X中轻松快速地打开Java Preferences窗格,您只需使用? + SPACE调用spotlight,然后键入它将显示在窗口最后一行的System Preferences。
就我而言,问题在于Oracle正在将其安装到与以前不同的位置。
从Oracle下载:http://java.com/en/download/mac_download.jsp?locale = en
通过查看System Prefs验证它是否已正确安装:
- Command-Space打开Spotlight,输入'System Preferences',点击回车。
- 单击底行中的Java图标。打开Java控制面板后,单击"Java"选项卡,"查看...",并验证您的安装是否有效。你也可以在那里看到一个"路径",如果它们与我的不同,你可以将它们放到下面的命令中。
验证版本是否符合您的预期(根据需要在路径中为sub):
/ 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
我遇到了类似的问题,终端没有更新java版本以匹配mac上安装的版本。
设置JAVA_HOME环境变量没有问题
我想出了一个暂时的,有点痛苦但有效的解决方案。
在你.bash_profile中添加以下行:
1 | export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home" |
(这是我的机器上的路径,但可能与您的路径不同,请确保获取您的路径。路径应匹配/ Library / Java / JavaVirtualMachines /)
运行
正如我所提到的,这是一个临时的创可贴解决方案,因为java主路径是硬编码的。实际上没有办法设置获取最新版本的路径,因为苹果应该已经为终端做了什么,问题是Apple的java_home环境变量没有得到更新。
自El Capitan以来,由于引入了新的"无根"策略,很难删除
因此,我只是将最新的java版本(在我的情况下,这是
1 2 | # Use latest java version export PATH=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH |
要为当前会话重新加载
现在,当您在shell中使用
对我来说,最简单,最干净的方法是使用自制软件安装Java,如下所述:
https://stackoverflow.com/a/28635465
1 2 | brew update brew cask install java |
基本问题:
我们需要将其指向JDK安装程序下载的那个。以下步骤适用于OSX 10.10.4 Yosemite。
- 打开系统首选项 - >选择Java。 Java窗口打开。
- 单击顶部的Java选项卡。点击"查看"按钮。
-
"Java运行时环境设置"选项卡将打开,如下所示:
-
双击
Path 项并复制路径(cmd + c)。这是JDK安装程序/更新程序安装的最新版本。就我而言,路径是/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -
打开终端。在这一步中,我们将系统java二进制文件指向(符号链接,
ln -s 命令)到我们在上一步中发现的最新版本。运行以下命令:
而已。要验证,您可以运行
<5233>
在终端上。它应该输出您安装/更新的最新版本。
您可以在终端中执行以下命令:
1 | export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH" |
这将用旧的替换java旧版本。
我做到了
1 | export JAVA_HOME=`/usr/libexec/java_home` |
并修复了我的Java 8问题。
之前:
1 2 3 | 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) |
后:
1 2 3 | 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之间随时切换。
简单地说:
1 | jenv global oracle-1.7 |
然后用于测试目的:
1 | jenv global oracle-1.6 |
而且你有更多的命令可用。
对JAVA_HOME路径进行硬编码可能不是最好的选择。
因此,正如其他线程中所讨论的那样(例如,我应该在OSX上设置JAVA_HOME应该怎么做),我仍然建议在.bash_profile中添加以下行:
1 | export JAVA_HOME=$(/usr/libexec/java_home) |
这太疯狂了! Oracle如何提供不安装任何东西的安装程序!?
无论如何对我来说是:
1 2 | 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版本...
简单解决方案
1 | export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH" |
如果您的计算机上有多个Java版本,并且您想在运行时动态选择它,即在我的情况下,我有两个版本:
1 2 3 | 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内容来更改它们。只需在文件末尾添加(或修改)以下两行:
1 2 | export JAVA_HOME=YOUR_JAVA_PATH/Contents/Home export PATH=$JAVA_HOME/bin:$PATH |
在我的情况下,如果我想使用它应该像下面这样:
Java 7:
1 2 | export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH |
Java 8:
1 2 | export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home export PATH=$JAVA_HOME/bin:$PATH |
保存文件后,请运行
Java 7:
1 2 3 |
Java 8:
1 2 3 |
如果您的java文件夹位于不同的位置,则该过程类似。
我想你可以尝试安装jdk而不是jre。通过安装jdk,将替换/ usr / bin / java中的java,并且所有库都可以正常工作。
这是因为您的.bash_profile没有反映更改。要反映它,只需使用以下命令
1 | $ source .bash_profile |
您可以运行此命令来查找/ Library / Internet Plugins /下的Java版本:
1 | defaults read /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Info.plist CFBundleVersion |
如果安装了Homebrew,则可以安装java-switcher以更快地更改Java默认版本
1 2 | brew tap andycillin/tap brew install java-switcher |
然后,您只需使用一个命令即可切换默认Java版本。
1 | java-switcher 1.7 |
要么
1 | java-switcher 10 |
我解决了这个问题
我下载并安装了最后一个Java SE Runtime Environment:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
由于我没有遇到这个问题,我正在采取预感 -
你能试试这个:
软链接"java_home"指向哪里:
1 | 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产生以下内容:
1 2 3 4 5 6 7 8 9 10 | 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 |
基于此,我们可能会得到进一步的提示吗?
从Oracle站点通过分布式JDK DMG进行安装,为我自动更新所有内容。我已经看到(在El Capitan中)通过
检查安装的JDK版本:
1 2 | $ ls /Library/Java/JavaVirtualMachines/ jdk-11.0.2.jdk jdk1.8.0_91.jdk |
现在在
1 2 3 | if [ -e /usr/libexec/java_home ]; then export JAVA_HOME=$(/usr/libexec/java_home -v 11) fi |
来源bashrc文件,Java版本将更新:
1 2 3 4 | $ 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) |
我通过重新安装Yosemite解决了这个问题,然后在终端(java -version)和(javac -version)上交叉检查java版本。它现在工作得很好。它不会改变为java 7,因为版本6仍然存在(命令+ n )libray> java> javavirtualmachine>你的javac当前版本。你需要解决java home。