许多使用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首选项窗格中定义).

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

推荐答案

我刚刚将该命令的输出设置为JAVA_HOME,这将为您提供Java首选项中指定的Java路径.下面是我的.bashrc文件的一个片段,它设置了这个变量:

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

References:

Java相关问答推荐

javafx getHostServices(). showDocument()调出Chrome而不是默认浏览器(Linux)

@从类文件中删除JsonProperty—Java

Oracle DUAL表上使用DDL时jOOQ问题的解析'

我想了解Java中的模块化.编译我的应用程序时,我有一个ResolutionException

scanner 如何在执行hasNextLine一次后重新读取整个文件?

使用Java Streams API比较两个不同的Java集合对象和一个公共属性

在模拟超类中设置非setter属性的值

为什么使用JDK21获取锁定锁比使用JDK11慢

Spring安全令牌刷新和JWT签名与本地计算的签名不匹配

try 从REST API返回对象列表时出错

删除打印语句会影响功能...腐败在起作用?

try 使用类来包含JSON响应

在应用getCellFormula()时,Excel引用中的文件名始终为";[1]";使用Apache POI()

如何使用Rascal Evaluator从编译的JAR访问Rascal函数?

简化每个元素本身都是 map 列表的列表

Eureka客户端无法使用用户/通行证注册到Eureka服务器

JavaFX中ListView中的问题

如何在Java中正确实现填字游戏求解器

OpenAPI Maven插件生成错误的Java接口名称

为什么当我输入变量而不是直接输入字符串时,我的方法不起作用?