当前位置: 首页 > 知识库问答 >
问题:

Mac OSX Java终端版本不正确

周子平
2023-03-14

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

当我导航到/library/java/javaVirtualMachines/时,我看到的是一个空文件夹。从我在其他文章中看到的内容来看,Java1.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个答案

印晋
2023-03-14

在Mac OS上,/usr/bin/java和friends是委托真实JDK命令的存根。这些存根尊重java_home环境变量的设置,但要使其工作,您需要安装JDK(从http://www.oracle.com/technetwork/java/javase/downloads/index.html),而不是JRE(从http://java.com)。

JDK安装到/library/java/javavirtualmachines/jdk1.7.0_NN.JDK中(对于NN的任何值),因此将java_home环境变量设置为/library/java/javavirtualmachines/jdk1.7.0_NN.JDK/contents/home以使/usr/bin/java使用1.7。只需将java_home指向/system/library/java/javaVirtualMachines/1.6.0.jdk/contents/home即可切换回1.6。您可以使用/usr/libexec/java_home工具自动查找正确的值,例如使/usr/bin/Java使用Java 7可以做到

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

为了使它使用Java6,您可以

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

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

如果希望从命令行运行1.7或1.8 JRE,可以在/library/Internet plug-ins/javaappletplugin.plugin/contents/home/bin/java中找到。这是一个固定路径,您在任何给定时间只能安装一个“public”JRE。

$ /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中使用shell别名

alias java_jre='/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java'
 类似资料:
  • 我已经在这个问题上纠结了好几个小时了,我相信除了把电脑扔出窗外之外,我什么都试过了。 我使用python版本3.7和Django版本2.1在Anaconda上设置了一个虚拟环境。如果我从Anaconda激活这个虚拟环境,一切都会顺利进行。 然而,当我试图从vscode终端激活环境时,我得到 我在vscode窗口的左下角显示了作为我的python解释器,但仍然得到了错误的python版本 我认为这可

  • 问题内容: 我创建了一个新的Rails项目,调用 然后当我在目录中运行 我收到关注错误 我见过其他人遇到此错误,但他们通常是linux用户,并且我正在运行Windows。我试图重新安装Rails(railsinstaller.org)和mysql 5.5。我既使用了32位版本,也使用了64位版本 问题答案: 这里似乎已经有几个问题。您尝试过他们的解决方案吗? 相关部分在这里:

  • 我已经在Linux中安装了pysnmp模块。 我想知道安装了哪个版本的pysnmp。如何通过Linux终端查看pysnmp版本?不工作。 我的linux中没有安装pip,因此也不起作用。。

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

  • 我最近在MacOS上安装了Python 3.10.1,并试图将VSCode设置为我的文件编辑器和集成终端。我成功安装了Python扩展,正如你在截图左下角看到的。然而,当我打开终端会话并检查Python的版本时,它显示2.7.18。 [![VSCode窗口的屏幕截图][1] 我尝试了settings.JSON文件中的各种设置,包括“terminal.integrated.inheritEnv:假”

  • 我在Win 7下运行的是Ant 1.8.1。而我的Java版本是1.7_17。 我在我的构建文件中添加了以下2行用于诊断。 而结果就是 知道发生了什么吗? 蚂蚁1.8.1中的硬编码是它能显示的最高java版本是1.6吗?