java_home 目录不正确,尽管它存在于我的环境文件中

java_home 目录不正确,尽管它存在于我的环境文件中

我正在使用 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/binalternatives

相关内容