如何修复Error: JAVA_HOME配置错误无法执行/usr/libexec/java_home/bin/java的问题?
解决「Error: JAVA_HOME is not defined correctly」问题(Java 6切换场景)
兄弟,这个问题我之前切换JDK版本时也踩过坑,核心就是你当前的JAVA_HOME配置还在默认指向Java 8,导致Maven找不到Java 6的执行文件。咱们一步步来搞定它:
1. 先确认Java 6的正确安装路径
先执行这个命令,直接获取系统里Java 6的官方路径:
/usr/libexec/java_home -v 1.6
如果能输出类似/Library/Java/JavaVirtualMachines/jdk1.6.0_45.jdk/Contents/Home的路径,说明Java 6安装没问题;要是报错,得先确保Java 6是正确安装到系统里的。
2. 修改.bash_profile配置,强制指向Java 6
你原来的export JAVA_HOME=$(/usr/libexec/java_home)会默认取系统里版本最高的JDK(也就是你之前的Java 8),这就是问题的根源。咱们改一下:
打开你的.bash_profile:
open ~/.bash_profile
替换掉原来的JAVA_HOME配置,选以下两种方式之一就行:
方式一:动态指定版本(推荐,方便以后切换)
# 明确指定使用Java 6 export JAVA_HOME=$(/usr/libexec/java_home -v 1.6) # 重置PATH,让Java 6的bin目录优先,避免其他版本干扰 export PATH=$JAVA_HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
方式二:硬编码路径(更稳定,适合长期用Java 6的场景)
把第一步获取到的Java 6路径直接写进去:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.6.0_45.jdk/Contents/Home export PATH=$JAVA_HOME/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
3. 让配置生效并验证
修改完后执行这个命令刷新环境变量:
source ~/.bash_profile
然后验证两个关键信息:
- 查看JAVA_HOME是否正确:
echo $JAVA_HOME,输出必须是Java 6的路径 - 查看当前Java版本:
java -version,应该显示java version "1.6.0_xx"
4. 重新执行你的Maven命令
现在再跑你原来的Maven命令,应该就不会报那个错误了:
/develop/tools/apache-maven-3.2.5/bin/mvn eclipse:clean eclipse:eclipse -P ut -f /develop/projects/mynavi.war/pom.xml
额外小技巧:快速切换JDK版本
如果你之后需要在Java 6和Java 8之间来回切,可以在.bash_profile里加两个别名:
# 切换到Java 6 alias java6='export JAVA_HOME=$(/usr/libexec/java_home -v 1.6); export PATH=$JAVA_HOME/bin:$PATH' # 切换到Java 8 alias java8='export JAVA_HOME=$(/usr/libexec/java_home -v 1.8); export PATH=$JAVA_HOME/bin:$PATH'
以后需要切换时,直接在终端敲java6或者java8就行,不用每次改配置文件。
内容的提问来源于stack exchange,提问作者Blaze
相关产品推荐
相关产品推荐

