Mac 上的 JAVA_HOME

标签 java macos

echo $JAVA_HOME 给我:

/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home

但是尝试使用此设置将项目导入 Intellij 不起作用。我的 JAVA HOME 必须在

/usr/libexec/java_home

如果是这样,我如何用我目前拥有的东西做到这一点?

“/usr/libexec/java_home -V”的输出

Matching Java Virtual Machines (4): 1.8.0_73, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home 1.7.0_80, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home 1.6.0_65-b14-466.1, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 1.6.0_65-b14-466.1, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home

最佳答案

有 3 件事适用于 JAVA_HOME 所在的 ENV 变量。 ENV 是一个作用域“字典”,它会在操作系统上启动的每个进程时实例化/加载。

一般通过SYSTEM配置和USER配置加载。驻留在/etc 中的文件被视为 SYSTEM - 对于 OSX,以下内容适用;最后加载的文件将覆盖以前的值:

登录外壳

首先是/etc/profile,然后按以下顺序尝试以下内容:~/.bash_profile、~/.bash_login 或 ~/.profile

非登录 shell

/etc/bashrc,然后~/.bashrc

那么,如果实际加载 IntelliJ 的脚本有一种设置 ENV 变量的机制,那么这当然是最后一个“单词”。

对于 IntelliJ,我相信有一个特定的变量用于此目的,即 IDEA_SDK。因此,将以下内容添加到您的用户的 ~/.profile 和 ~/.bashrc 中:

export IDEA_SDK=$(/usr/libexec/java_home -v 1.8.0_73)

希望这能起作用(确保命令正确 - mby 甚至省略版本参数)

关于Mac 上的 JAVA_HOME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35697203/

相关文章:

macos - 向 x86-64 二进制文件写入跳转命令

java - 在 JBoss EAP 6.4 上的 JBoss Fuse 6.3 中使用 Camel 访问环境属性时出错

java - 具有数据初始化和整个数据在 Java 中定期刷新的缓存 map

java - 在哪里可以找到 Java API 代码

java - 网络服务器 : use Service instead of Thread

swift - 通过 GUI 获取 sudo 询问密码

macos - SSH本地主机身份验证失败Mac

java - 为什么不可修改的集合受到 Collections 包的保护?

macos - CFStringGetLength EXC_BAD_ACCESS (SIGSEGV) 崩溃

ruby-on-rails - 升级山狮后无法安装某些 gem