首页 文章

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

提问于
浏览
366

我安装了从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 回答

  • 61

    对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)
    
  • 19

    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
    
  • 6

    我通过重新安装Yosemite解决了这个问题,然后在终端(java -version)和(javac -version)上交叉检查java版本 . 它现在工作得很好 . 它不会更改为java 7,因为版本6仍然存在(命令n) libray> java> javavirtualmachine>你的javac当前版本 . 你需要解决java home .

  • 10

    自El Capitan以来,由于引入了新的"rootless"政策,很难删除 /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 .

  • 4

    我做到了

    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)
    
  • 31

    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开始,上述解决方案工作正常

  • 0

    这是因为您的.bash_profile没有反映更改 . 要反映它,只需使用以下命令

    $ source .bash_profile
    
  • 12

    因为您需要输入Java Preferences窗格并以这种方式仅标记JVM 7:

    Java Preferences

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

  • 7

    就我而言,问题在于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

    • 创建从/ usr / bin / java到新安装的链接

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

    • 完整性检查您的版本:

    java -version

  • 7

    对我来说,最简单,最干净的方法是使用自制软件安装Java,如下所述:

    https://stackoverflow.com/a/28635465

    brew update
    brew cask install java
    
  • 6

    您可以在终端中执行以下命令:

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

    而这将取代旧的Java旧版本 .

  • 0

    安装JDK 7,这个问题将自行解决 .

    一定要获得包含编译器和类似内容的Java Development Kit(JDK),而不仅仅是Java Runtime Environment(JRE) .

  • 55

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

    你能试试这个:

    软链接“java_home”指向哪里:

    ls -lrt /usr/libexec/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产生以下内容:

    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
    

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

  • 1

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

  • 103

    简单解决方案

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

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

  • 3

    基本问题: /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选项卡打开如下:
      JRE Settings tab

    • 双击 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 即可 . 它应该输出您安装/更新的最新版本 .

  • 0

    如果您的计算机上有多个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
    

    保存文件后, please run 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文件夹位于不同的位置,则该过程类似 .

  • 0

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

  • 1

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

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

    我建议你看一下这个工具Jenv

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

    简单地说:

    jenv global oracle-1.7
    

    然后用于测试目的:

    jenv global oracle-1.6
    

    而且你有更多的命令可用 .

  • 2

    我遇到了类似的问题,终端没有更新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环境变量没有得到更新 .

  • 291

    这太疯狂了! 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版本...

  • 24

    从Oracle站点通过分布式JDK DMG进行安装,为我自动更新所有内容 . 我已经看到(在El Capitan中)更新 System Preferences > Java 做更新,但不反映到命令行 . 通过DMG安装可以完成这项工作 .

相关问题