我应该在 macOS X 10.6 上设置啥 JAVA_HOME 环境变量?

     2023-03-22     41

关键词:

【中文标题】我应该在 macOS X 10.6 上设置啥 JAVA_HOME 环境变量?【英文标题】:What should I set JAVA_HOME environment variable on macOS X 10.6?我应该在 macOS X 10.6 上设置什么 JAVA_HOME 环境变量? 【发布时间】:2010-11-23 20:18:22 【问题描述】:

许多使用 shell 脚本配置其环境的 Java 应用程序使用 JAVA_HOME 环境变量来启动正确的 Java 版本、定位 JRE JAR 等等。

在 macOS X 10.6 中,以下路径似乎对此变量有效

/Library/Java/Home
/System/Library/Frameworks/JavaVM.framework/Home
/System/Library/Frameworks/JavaVM.framework/Versions/Current

其中一些是指向实际当前 VM 的符号链接(在 Java 首选项窗格中定义)。

但是应该使用哪一个——或者可以使用其中任何一个?

【问题讨论】:

Where is JAVA_HOME on OSX Lion (10.7) , Mountain Lion (10.8) or Mavericks (10.9)?的可能重复 【参考方案1】:

建议在设置JAVA_HOME环境变量之前检查默认终端shell,通过以下命令:

$ echo $SHELL
/bin/bash

如果你的默认终端是/bin/bash(Bash),那么你应该使用@hygull方法

如果你的默认终端是/bin/zsh(Z Shell),那么你应该在~/.zshenv文件中设置这些环境变量,内容如下:

export JAVA_HOME="$(/usr/libexec/java_home)"

同样的,上面没有提到的任何其他终端类型,你应该在其各自的终端环境文件中设置环境变量。

此方法测试在 ma​​cOS Mojave 版本 10.14.6 中工作。

【讨论】:

【参考方案2】:

我只是将JAVA_HOME 设置为该命令的输出,它应该为您提供Java 首选项中指定的Java 路径。这是我的.bashrc 文件中的一个 sn-p,它设置了这个变量:

export JAVA_HOME=$(/usr/libexec/java_home)

我在使用该技术时没有遇到任何问题。

有时我必须将JAVA_HOME 的值更改为Java 的早期版本。例如,我正在维护的一个程序在 OS X 上需要 32 位 Java 5,因此在使用该程序时,我通过运行设置 JAVA_HOME

export JAVA_HOME=$(/usr/libexec/java_home -v 1.5)

对于那些在你的路径中没有java_home 的人,像这样添加它。

sudo ln -s /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home /usr/libexec/java_home

参考文献

Oracle explains the java_home command

An article for configuring the JDK in Spring Tool Suite (Eclipse 2019) on MacOS

【讨论】:

Snow Leopard 仍然有 /usr/libexec/java_home。谢谢 对小牛仍然有效 对优胜美地仍然有效。 ;) High Sierra 10.13.1 检查!! 对莫哈韦沙漠仍然有效【参考方案3】:

以上内容在 YOSEMITE 中不再适用于图形应用程序!像 eclipse,或者任何从 Spotlight 开始的东西。 (.bash_profile、launchd.conf 仅适用于终端会话。) 在启动 eclipse 之前,只需打开一个终端窗口,并发出以下命令:

launchctl setenv JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home

(使用您的安装路径!也许也可以使用 $(/usr/libexec/java_home) 而不是完整路径。)

在此处查看有关永久解决方案的完整优秀文章: Setting environment variables via launchd.conf no longer works in OS X Yosemite/El Capitan/macOS Sierra?

【讨论】:

【参考方案4】:

现在Java好像安装在/Library/Java/JavaVirtualMachines

【讨论】:

相关:Where is JAVA_HOME on OSX Lion (10.7) or Mountain Lion (10.8)?【参考方案5】:

我正在使用 MAC OS X(Sierra) 10.12.2

我按照以下步骤将 JAVA_HOME 设置为在 React Native(适用于 Android 应用程序)上工作。

打开终端(Command+R,输入终端,回车)。

将以下行添加到 ~/.bash_profile export JAVA_HOME=$(/usr/libexec/java_home)

现在运行以下命令。 source ~/.bash_profile

您可以通过键入以下命令来检查 JAVA_HOME 的确切值。 echo $JAVA_HOME

返回的值(输出)将如下所示。 /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

就是这样。

【讨论】:

这很有帮助,谢谢。但我相信你错过了包括最后一步,然后将 JAVA_HOME 设置为 .bashrc / .bash_profile / .zshrc / 等中的返回值。如果我弄错了,请纠正我。 不需要。在我的例子中,$JAVA_HOME 指的是$(/usr/libexec/java_home)$(/usr/libexec/java_home) 在内部被系统称为/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home 知道了。在我的情况下是必需的。谢谢。【参考方案6】:

由于您提到了应用程序,因此跳过终端设置,永久系统环境变量设置(适用于 macOS Sierra;也适用于 El Capitan):

launchctl setenv JAVA_HOME $(/usr/libexec/java_home -v 1.8)

(这会将 JAVA_HOME 设置为最新的 1.8 JDK,您可能已经经历了几次更新,例如 javac 1.8.0_101、javac 1.8.0_131) 当然,将 1.8 更改为 1.7 或 1.6(真的吗?)以满足您的需要和您的系统

【讨论】:

【参考方案7】:

创建文件~/.mavenrc

然后将其粘贴到文件中

export JAVA_HOME=$(/usr/libexec/java_home)

测试

mvn -v

【讨论】:

我喜欢这种方法,因为它允许我在 .mavenrc 文件中轻松更改 Java 版本。【参考方案8】:

对我来说,maven 似乎可以处理 .mavenrc 文件:

echo "export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)" > ~/.mavenrc

我确定我也是在 SO 上看到的,只是不记得在哪里。

【讨论】:

【参考方案9】:

对于 Fish Shell 用户,请使用类似以下内容:alias java7 "set -gx JAVA_HOME (/usr/libexec/java_home -v1.7)"

【讨论】:

【参考方案10】:

正如其他答案所指出的,找到 Java 主目录的正确方法是使用 /usr/libexec/java_home

Apple 的技术问答 QA1170:OS X 上的重要 Java 目录:https://developer.apple.com/library/mac/qa/qa1170/_index.html

【讨论】:

这是重复的! 我认为包含指向 Apple 官方文档的链接使其不再多余。但如果是,正确的做法是将其标记为重复,而不是发表评论。 我发表了评论,因为我无法将答案标记为重复。 Stack Overflow 只允许用户将 question 标记为重复(不幸的是)。该链接很有帮助,但我认为对当前答案的评论(或者只是使用链接编辑它,因为您已经有能力)会更好,因为它将所有有用的信息集中在一个答案中。我相信 Stack Overflow 更喜欢修复当前答案而不是编写新答案。【参考方案11】:

我找到了这个stack 来提供帮助,我遇到了同样的问题,我可以解决:

我的 java 路径在这里:

/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

并且需要放入我的.bash_profile:

export JAVA_HOME=\"/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home\"

希望帮助

【讨论】:

【参考方案12】:

我使用的是 Mac OS 10.6.8

对我来说最简单的解决方案就是放入

$ export JAVA_HOME=$(/usr/libexec/java_home)

要测试它是否有效,请输入

$ echo $JAVA_HOME

它显示

/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

你也可以测试

$ which java

【讨论】:

【参考方案13】:

另外,设置 PATH 以反映 JDK 也很有趣。添加 JAVA_HOME 后(可以通过 'mipadi' 引用的示例完成):

export JAVA_HOME=$(/usr/libexec/java_home)

在 ~/.profile 中也添加:

export PATH=$JAVA_HOME/bin:$PATH

P.S.: 对于 OSX,我通常在 HOME 目录中使用 .profile 而不是 .bashrc

【讨论】:

对于运行默认 bash 的 OSX,我一般使用 bash .bash_profile — 为什么你使用而不是通用的 .profile 由于.profile 是通用的,它可以与shbash 一起使用,而.bash_profilebash 独有的。这也将设置与使用.bash_profile 的应用程序隔离开来,例如MacPorts。但是您可以安全地使用这两者中的任何一个。查看更多信息here — 仅供参考,您提供的链接证实了我的怀疑,即在 bash 下(即默认情况下),使用 .bash_profile 会覆盖 .profile @LeeGee 是的,它这样做是因为.bash_profile 是特定的,而.profile 是通用的,对于所有sh 变体。 由于 OS/X 在您的 /usr/bin 中放置了指向 java 的链接,因此不需要将 $JAVA_HOME 显式添加到您的路径中。【参考方案14】:

我倾向于使用/Library/Java/Home。首选项窗格的工作方式应该与您的首选版本保持同步。

【讨论】:

/bin 。并检查它是否指向 /Library/java 而不是 /System/Library/.. 因为那个可能已经过时了。 这不再准确。在 OS X 10.5 及更高版本上,使用 /usr/libexec/java_home 查找路径。

我应该如何在 macOS 上设置 JAVA_HOME 环境变量? [复制]

】我应该如何在macOS上设置JAVA_HOME环境变量?[复制]【英文标题】:HowshouldIsettheJAVA_HOMEenvironmentvariableonmacOS?[duplicate]【发布时间】:2015-08-0721:19:43【问题描述】:我知道这个问题以前被问过很多次,但我确实读过,我会告诉你我... 查看详情

有没有人在 MacOS 10.6 上使用过 OpenCV 与 Python 2.7 一起工作?

】有没有人在MacOS10.6上使用过OpenCV与Python2.7一起工作?【英文标题】:HasanyoneeverhadOpenCVworkwithPython2.7onMacOS10.6?【发布时间】:2011-01-0208:19:58【问题描述】:在过去的6个月里,我一直在尝试让OpenCV在MacOS上与Python一起工作。每次有... 查看详情

我啥时候应该在课堂上使用“this”?

】我啥时候应该在课堂上使用“this”?【英文标题】:WhenshouldIuse"this"inaclass?我什么时候应该在课堂上使用“this”?【发布时间】:2011-01-2513:24:45【问题描述】:我知道this指的是当前对象。但我不知道什么时候我真的需... 查看详情

我啥时候应该在课堂上使用 QSettings 保存设置?

】我啥时候应该在课堂上使用QSettings保存设置?【英文标题】:WhenshouldisavesettingswithQSettingsinaclass?我什么时候应该在课堂上使用QSettings保存设置?【发布时间】:2011-10-1104:43:09【问题描述】:我以前在closeEvent中保存设置,现在... 查看详情

Xcode 5 Cocoa 应用程序无法在 OS X 10.6 上加载 Nib

...中创建了一个全新的基于文档的应用程序,并更改了两个设置以使其与10.6兼容:我将部署目标更改为10.6,并在MainMenu.xib和xxD 查看详情

Xcode 5 为 OS X 10.6 开发

...d编写一个Cocoa应用程序。我停用了自动布局并将部署目标设置为10.6,但存档的应用程序不会在10.6上启动,因为它无法加载nib(控制台输出)。根据我的阅读,我需要使用垃圾收集而不是ARC。如果这是真的,我如何修 查看详情

在 Mac OS X 10.6 上安装 PECL

】在MacOSX10.6上安装PECL【英文标题】:InstallPECLonMacOSX10.6【发布时间】:2011-07-2900:23:22【问题描述】:有没有办法在MacOSX10.6上安装PHP:sPECL处理程序,以便与捆绑的PHP一起使用?【问题讨论】:【参考方案1】:迟到总比没有好,但... 查看详情

我应该在桌面上的 ubuntu 中为 gitlab 服务器设置“external_url”啥?

】我应该在桌面上的ubuntu中为gitlab服务器设置“external_url”啥?【英文标题】:whatshouldisetthe"external_url"forgitlabserverinubuntuonmydesktop我应该在桌面上的ubuntu中为gitlab服务器设置“external_url”什么?【发布时间】:2018-11-2404:18... 查看详情

我应该使用啥工具来创建我的 buildmachine?

】我应该使用啥工具来创建我的buildmachine?【英文标题】:WhattoolshouldIusetocreatemybuildmachine?我应该使用什么工具来创建我的buildmachine?【发布时间】:2011-01-2211:43:17【问题描述】:我的空闲时间正在使用C++编写的多平台/多架构库... 查看详情

在 10.6 (Snow Leopard) 之后以编程方式设置 Mac OS X 音量

】在10.6(SnowLeopard)之后以编程方式设置MacOSX音量【英文标题】:SettingMacOSXvolumeprogrammaticallyafter10.6(SnowLeopard)【发布时间】:2014-07-3123:54:38【问题描述】:有没有办法使用Objective-C设置Mac的系统音量?我尝试使用:AudioDeviceSetProperty(... 查看详情

在 Mac OS X 10.6 Snow Leopard 上使用 MAMP 安装 MySQLdb for Django

】在MacOSX10.6SnowLeopard上使用MAMP安装MySQLdbforDjango【英文标题】:InstallingMySQLdbforDjangoonMacOSX10.6SnowLeopardwithMAMP【发布时间】:2011-09-0806:56:29【问题描述】:所以我知道这不是一个新话题,但似乎没有人能够解决它,至少对于Python2.6/... 查看详情

我应该在测试盒上授予开发人员啥确切权限

】我应该在测试盒上授予开发人员啥确切权限【英文标题】:whatexactpermissionsshouldIgranttodevsonatestbox我应该在测试盒上授予开发人员什么确切权限【发布时间】:2018-11-1615:17:21【问题描述】:我最近为开发人员设置了一个Oracle12.0... 查看详情

macOS 上的 .so 和 .dylib 有啥区别?

...macOS上的动态库扩展,但我一直不清楚我什么时候不能/不应该使用传统的unix.so共享对象。我的一些问题:在概念层面上,.so和.dylib之间的主要区别是 查看详情

在 Mac OS 10.6 上安装 psycopg2 时出错

】在MacOS10.6上安装psycopg2时出错【英文标题】:Errorinstallingpsycopg2onMacOS10.6【发布时间】:2012-01-1409:57:03【问题描述】:您好,我正在尝试在Mac10.6上安装psycopg2。安装后尝试导入时出现此错误importpsycopg2Traceback(mostrecentcalllast):File"&l... 查看详情

同时拥有 Visual Assist X 10.6 和 Resharper 如何在 C# 项目上关闭 VAX?

】同时拥有VisualAssistX10.6和Resharper如何在C#项目上关闭VAX?【英文标题】:HavingbothVisualAssistX10.6andResharperHowtomakeVAXturnoffonC#projects?【发布时间】:2013-06-1909:20:14【问题描述】:安装了VAX和RS如何在C#项目上关闭VAX(因为Resharper和默... 查看详情

在 MacOS 上使用 pyuno 进行文件转换

】在MacOS上使用pyuno进行文件转换【英文标题】:UsingpyunoonMacOStodofileconversions【发布时间】:2011-02-0203:01:46【问题描述】:我正在运行MacOS10.6和OpenOffice3.3。我有兴趣使用PyUNO脚本将.odp转换为.ppt、.pdf和.swf。我还没有找到任何关于... 查看详情

在 Mac OS 10.6 (python 2.6) 上安装/构建 pymssql

】在MacOS10.6(python2.6)上安装/构建pymssql【英文标题】:installing/buildingpymssqlonMacOS10.6(python2.6)【发布时间】:2011-03-0316:39:18【问题描述】:按照自述文件和此处http://code.google.com/p/pymssql/wiki/Compilation中的说明,我已经安装了Cython(v0.14.... 查看详情

在 Mac OS X 10.6 上使用带有 Python 2.7 的 Google App Engine SDK

】在MacOSX10.6上使用带有Python2.7的GoogleAppEngineSDK【英文标题】:UsingGoogleAppEngineSDKwithPython2.7onMacOSX10.6【发布时间】:2011-12-2823:40:57【问题描述】:我需要在安装了Python2.6的MacSnowLeopard上运行Python2.7。根据thisanswer,从Python.org运行Pyth... 查看详情