在Mac OS X上安装了Java 7,但terminal仍在使用版本6

我已经安装了从oracle的网站上下载的JDK 7u7。 但安装完毕后,terminal仍然显示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:好的,问题已经解决了。 这里是答案:我发现我的terminal有一个.bash_profile和Java主variables设置为1.6

 export JAVA_HOME="/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home" 

所以这是每当我打开一个新的terminal窗口导致问题的线路。 简单地删除这条线将解决问题。 您仍需要遵循@aleroot所说的内容,但是如果这不适用于您,请检查.bash_profile(或.bashrc)设置文件,以查看您以前是否导出过任何Java版本。

因为您需要在Java首选项窗格中input并通过以下方式仅标记JVM 7:

Java首选项

要轻松快速地打开Mac OS X中的Java首选项窗格,只需使用 + SPACE调用Spotlight,然后键入系统首选项 ,它将显示在窗口的最后一行中。

Oracle的安装程序将Java放在/Library/Internet Plug-Ins/JavaAppletPlugin.plugin 。 它不会覆盖/usr/bin/java 。 所以,如果你发出一个

 whereis java 

在terminal中,它会返回/ usr / bin / java。 (依次指向/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java ,这是苹果的1.6版本)。

因此,如果您要使用新的Java版本,请replace/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 Runtime Environment(JRE)。

vi ~/.bash_profile

export JAVA_HOME=`/usr/libexec/java_home -v 1.7`

这会告诉你的/usr/bin/java链接目标使用最新安装的Java 7 Package

/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包移到基于Java的Java包。 上述解决scheme从Mac OS X 10.8.2开始工作正常

就我而言,问题在于Oracle正在将它安装到与以前不同的位置。

从Oracle下载: http : //java.com/en/download/mac_download.jsp?locale=en

  1. 通过查看System Prefs来validation它是否正确安装:

    • Command-Space打开Spotlight,input“系统偏好设置”,按回车。
    • 点击底部的Java图标。 Java控制面板打开后,点击“Java”选项卡,“查看…”,并validation您的安装是否正常。 你也可以在那里看到一个“path”,如果它们与我的不同,你可以将它们分成下面的命令。
  2. validation版本是否如您所期望的那样(根据需要在您的path中):

    / Library / Internet \ Plug-Ins / JavaAppletPlugin.plugin / Contents / Home / bin / java -version

  3. 从/ usr / bin / java创build链接到你的新安装

    sudo ln -fs / Library / Internet \ Plug-Ins / JavaAppletPlugin.plugin / Contents / Home / bin / java / usr / bin / java

  4. 完美检查您的版本:

    java -version

我遇到了一个类似的问题,terminal没有更新Java版本,以匹配安装在Mac上的版本。

没有设置JAVA_HOME环境variables的问题

我想出了一个暂时的,有些痛苦但却有效的解决scheme。

在你的.bash_profile中添加行:

 export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_11.jdk/Contents/Home" 

(这是我的机器上的path,但可能与你的path不同,请确保获得你的path,path应该与/ Library / Java / JavaVirtualMachines /相匹配)

运行source ~/.bash_profile

正如我所提到的,这是一个临时的创可贴解决scheme,因为java homepath是硬编码的。 真的没有办法设置获取最新的path,因为这是苹果公司已经为terminal做了什么,问题是苹果的java_home环境variables没有得到更新。

由于El Capitan,因为引入了新的“无根”策略,所以很难删除/usr/bin/java符号链接。

因此,我简单地将path添加到我的.bashrc文件中的PATH (在我的情况下这是/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin

 # Use latest java version export PATH=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH 

要重新加载当前会话的.bashrc文件,请在shell中运行source ~/.bashrc 。 您只需对更改.bashrc文件之前已启动的会话执行此操作。

现在使用最新版本,当你在shell中使用java

基本问题: /usr/bin/java最初是指向OSX本身提供的( /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java )。我们需要指出这个由JDK安装程序。 以下步骤适用于OSX 10.10.4优胜美地。

  • 打开系统偏好设置 – >selectJava。 Java窗口打开。
  • 点击顶部的Java选项卡。 点击“查看”button。
  • Java运行时环境设置选项卡打开如下: JRE设置选项卡
  • 双击Path项并复制path(cmd + c)。 这是由JDK安装程序/更新程序安装的最新版本。 在我的情况下,path是/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
  • 打开terminal。 在这一步中,我们将把系统java二进制文件指向(符号链接, ln -s命令)到我们在前面的步骤中发现的最新的一个。 运行以下命令:

sudo ln -s /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java /usr/bin/java

而已。 为了validation,你可以在terminal上运行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) 

对我来说,最简单和最干净的方法是使用像这里描述的自制软件安装Java:

https://stackoverflow.com/a/28635465

 brew update brew cask install java 

http://www.java.com/en/download/faq/java_mac.xml是理解的一个很好的地方,当Apple停止对Java的支持时,为什么Java Preferences不再存在,并依赖于System_Preferences => Java = >如果安装了Oracle的Java 7,则为Java。

我可以build议你看看杰夫的工具

这将允许您在安装的JVM之间随时切换。

简单地说:

 jenv global oracle-1.7 

那么以后为了testing目的:

 jenv global oracle-1.6 

你有更多的命令可用。

硬编码的JAVA_HOMEpath可能不是最好的主意。 /usr/libexec/java_home实用工具在Mac OSX Lion 10.7.5和JDK 1.7.0_13上适用于我。 根据其手册页,它是用于苹果旧的Java首选项窗格,但它似乎与Oracle(Java控制面板)提供的replace工作。 例如,运行/usr/libexec/java_home -V列出了我机器上所有已安装的JDK(包括1.6。*和1.7。*)。

所以,正如在其他线程(例如, 我应该设置JAVA_HOME到OSX上 ),我仍然build议添加以下行到您的.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版本…

您可以在terminal中执行以下命令:

 export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH" 

这取代了旧的Java新的。

我想你可以尝试安装jdk而不是jre。 通过安装jdk,/ usr / bin / java中的java将被replace,并且所有库都将正常工作。

您可以运行此命令来查找位于/ Library / Internet Plugins /下的Java版本:

 defaults read /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Info.plist CFBundleVersion 

简单的scheme

 export PATH="/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin:$PATH" 

由于我没有遇到这个问题,我正在预感 –

你可以请尝试这个:

软链接“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 

基于此,我们可能会有进一步的提示吗?

这是因为你的.bash_profile没有反映变化。为了体现它,只需使用下面的命令

$ source .bash_profile

我解决了这个问题,重新安装优胜美地,然后在terminal(java -version)和(javac -version)上交叉检查java版本。它现在完美的工作。它不会改变为Java 7,因为版本6仍然存在(command + n )libray> java> javavirtualmachine>你的javac当前的版本。你需要解决的Java主页。

我用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版本。