我有一个NetBeans平台项目与Maven2构建。当我尝试创建一个新的平台模块时,我得到这个奇怪的错误:
cd ~/src; JAVA_HOME=/usr/lib/jvm/jdk1.7.0/bin/java ~/netbeans-7.3/java/maven/bin/mvn -DarchetypeGroupId=org.codehaus.mojo.archetypes...
Error: JAVA_HOME is not defined correctly.
We cannot execute /usr/lib/jvm/jdk1.7.0/bin/java/bin/java
在~/.bashrc
中,我有JAVA_HOME
的定义:
export JAVA_HOME="/usr/lib/jvm/jdk1.7.0"
export JDK_HOME="/usr/lib/jvm/jdk1.7.0"
结尾没有斜杠,但是maven将/bin/java/bin/java
附加到该路径。我可以用Maven构建已经存在的模块而没有问题,只是在创建新模块时失败了。Maven从哪里得到这个JAVA_HOME
?
maven设置:
$ mvn -version
Apache Maven 2.2.1 (r801777; 2009-08-06 21:16:01+0200)
Java version: 1.7.0_17
Java home: /usr/lib/jvm/java-7-oracle/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux" version: "3.2.0-39-generic" arch: "amd64" Family: "unix"
您在命令行上重新定义JAVA_HOME
以指向/usr/lib/jvm/jdk1.7.0/bin/java
,这是错误的:
cd ~/src; JAVA_HOME=/usr/lib/jvm/jdk1.7.0/bin/java ...
从命令行删除JAVA_HOME=/usr/lib/jvm/jdk1.7.0/bin/java
:
cd ~/src; ~/netbeans-7.3/java/maven/bin/mvn -DarchetypeGroupId=org.codehaus.mojo.archetypes...
netbeans从IDE中Java平台的定义中获取JAVA_HOME(参见Tools/Java Platforms)
除非您选择自定义平台,否则IDE使用默认平台,即IDE运行的平台。
所有的平台都需要在Tools/Java platforms对话框中定义,并且验证检查已经到位,以选择正确的文件夹。
也许随着时间的变化,你的定义不正确了?
问题在于~/.bash_profile
中JAVA_HOME
的定义不正确
NetBeans集成maven首选:
System.getenv("JAVA_HOME")
:
System.getProperty("java.home")
对于Linux,在netbeans的java/maven/bin文件夹下找到MVN可执行文件,并添加
from="/bin/bin/java"
to="/bin/java"
JAVACMD="${JAVACMD/$from/$to}"
在
行之前if [ ! -x "$JAVACMD" ] ; then
echo "Error: JAVA_HOME is not defined correctly."
欢呼