Mac OSX Java Terminal 版本不正确断续器断续器

2022-08-31 15:33:11

好吧,我对Mac和OSX有点陌生,但我选择了一个,这样我就可以用一个对我的Java程序进行一些故障排除,因为我工作的公司使用OSX和Windows机器的组合。我遇到的问题是,当我从Oracle的网站安装Java 7时,它会更新首选项菜单,并且在双击它们时似乎可以正确执行.jar文件,但是终端窗口的版本仍然是1.6.0_43,并且从终端运行相同的.jar文件会导致由于旧版本而导致的运行时错误。

当我导航到 /Library/Java/JavaVirtualMachines/ 时,我看到一个空文件夹。根据我在其他文章中看到的内容,这就是Java 1.7.0版本文件夹应该在哪里。知道发生了什么吗?如何让终端使用正确版本的 Java?

编辑:@DWilches评论他原来的答案:(1)

total 64
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.4 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.4.2 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.5 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.5.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.6 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Mar 17 21:38 1.6.0 -> CurrentJDK
drwxr-xr-x  8 root  wheel  272 Mar 17 21:38 A
lrwxr-xr-x  1 root  wheel    1 Mar 17 21:38 Current -> A
lrwxr-xr-x  1 root  wheel   59 Mar 17 21:38 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents

(2)

ls -ld /usr/bin/java
lrwxr-xr-x  1 root  wheel  74 Mar 17 21:38 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java

编辑:抱歉有一个新的答案,太习惯于在这么长时间后阻止编辑原始帖子的网站......


答案 1

断续器

在 Mac OS 上,朋友是委托给真正的 JDK 命令的存根。这些存根遵循环境变量的设置,但要使其工作,您需要安装 JDK(来自 http://www.oracle.com/technetwork/java/javase/downloads/index.html),而不是 JRE(来自 http://java.com)。/usr/bin/javaJAVA_HOME

JDK 将安装到 (对于 NN 的任何值),因此请将环境变量设置为 使用 1.7。您只需将鼠标指向 即可切换回 1.6。您可以使用该工具自动查找正确的值,例如,使用Java 7,您可以执行/Library/Java/JavaVirtualMachines/jdk1.7.0_NN.jdkJAVA_HOME/Library/Java/JavaVirtualMachines/jdk1.7.0_NN.jdk/Contents/Home/usr/bin/javaJAVA_HOME/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/usr/libexec/java_home/usr/bin/java

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

并且要使其使用Java 6,您可以做

export JAVA_HOME=`/usr/libexec/java_home -v '1.6*'`

这同样适用于 Java 8(使用 )。这将为相关主要版本选择最新安装的JDK,您无需在安装更新时记住手动更改。-v '1.8*'NN

断续器

如果要从命令行运行 1.7 或 1.8 JRE,可以在 中找到它。这是一个固定的路径,在任何给定时间只能安装一个“公共”JRE。/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java

$ /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java -version
java version "1.7.0_13"
Java(TM) SE Runtime Environment (build 1.7.0_13-b20)
Java HotSpot(TM) 64-Bit Server VM (build 23.7-b01, mixed mode)

您可以在.bashrc

alias java_jre='/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java'

答案 2

问题是Oracle的JRE安装不会更改/usr/bin/java可执行文件。如果你想使用这个Java,你必须使用/Library下的路径(需要找到这是什么,我有JDK安装,所以可能会有所不同)

根据 Oracle 的 JRE 安装文档

从Oracle安装JRE不会更新java版本符号链接或将java添加到您的路径中。为了能够做到这一点,你需要安装JDK。

Oracle JDK确实更改为指向Java 7可执行文件。如果你正在做开发,那么你应该使用它,因为它包含的不仅仅是JRE。/usr/bin/java

甲骨文安装常见问题解答

问:我应该安装 JRE 还是 JDK?

答:如果您计划运行 Java 应用程序,请安装 Java 运行时环境 (JRE)。JRE也被称为Oracle Java。安装 JRE 后,可以通过双击 JAR 文件、JNLP 文件和浏览器来启动 Java 小程序和应用程序。请注意,JRE 不支持 32 位浏览器,例如 32 位模式下的 Firefox 和 Chrome。

如果您计划编写 Java 应用程序,请安装 Java 开发工具包 (JDK)。