我正在使用 Java jdk 和 Maven,并且具有以下 /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
# Maven Settings
export JAVA_HOME=/usr/local/jdk1.6.25/
export M2_HOME=/usr/local/apache-maven/apache-maven-3.0.3
export M2=$M2_HOME/bin
export PATH=$M2:$PATH
/usr/local/jdk1.6.25 确实存在,但是当我运行 mvn -version 时,我得到了...
Warning: JAVA_HOME environment variable is not set.
Apache Maven 3.0.3 (r1075438; 2011-02-28 17:31:09+0000)
Maven home: /usr/local/apache-maven/apache-maven-3.0.3
Java version: 1.6.0_23, vendor: Sun Microsystems Inc.
Java home: /usr/lib/jvm/java-6-openjdk/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.0.0-14-generic", arch: "i386", family: "unix"
有谁知道为什么这认为我的 java_home 目录不正确,即使它存在于我的环境文件中?
答案1
一些想法...首先,为了便于阅读,重新格式化,这是你的 PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
这些是你的环境变量:
导出JAVA_HOME=/usr/local/jdk1.6.25/ 导出 M2_HOME=/usr/local/apache-maven/apache-maven-3.0.3 导出 M2=$M2_HOME/bin 导出 PATH=$M2:$PATH
请注意,“java”(程序)位于 中$JAVA_HOME/bin
,而不是 中$JAVA_HOME
。当在 shell 的 PATH 中发现不同的“java”时,这会引起一点混乱。例如...
$ 类型 java java 是 /usr/bin/java
因此只需修改你的 PATH:
$ 导出 PATH=$JAVA_HOME/bin:$PATH $ 类型 java ...应该是 $JAVA_HOME/bin/java ...
但我不认为这是问题所在。从 mvn shell 脚本启动器,
如果 [ -z "$JAVA_HOME" ] ; 然后 echo “警告:未设置JAVA_HOME 环境变量。” 菲
这意味着 var 确实没有设置 —— 而不仅仅是设置为错误的值。也许这是关键的提示:
[my java_home ...] 即使它存在于我的环境文件中?
也许您添加/修改了JAVA_HOME
或.bashrc
,.profile
然后在同一个 shell 中尝试运行mvn -v
?如果是这样,这些值将不会被获取,直到您获取文件(例如. ~/.bashrc
)或创建新的登录 shell(bash -l
)以便设置(或重置)这些环境变量。
(此外......这只是一个意见问题,但在你的PATH
,我会把标准/usr/bin
(和/usr/sbin
和)留在任何或(等)/bin
前面,只是为了避免任何流氓“本地”程序优先于标准程序......使用类似的方法会更好覆盖标准应用程序的默认版本。)/usr/local/bin
/opt/bin
alternatives