2013-03-28 56 views
0

我有一个使用Maven2构建的NetBeans平台项目。当我尝试创建一个新的平台模块我得到这个奇怪的错误:Netbeans Maven项目:JAVA_HOME没有正确定义

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" 

有结尾没有斜杠,但行家追加/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" 
+0

是否使用'打开JDK'或'甲骨文/ Sun JDK'线

if [ ! -x "$JAVACMD" ] ; then echo "Error: JAVA_HOME is not defined correctly." 

欢呼过吗? – 2013-03-28 08:16:52

+0

它是Oracle Java,但在这种情况下并不重要。是的,问题出现在NetBeans中,我猜... – Tombart 2013-03-28 08:22:43

回答

0

的问题是与JAVA_HOME不正确定义~/.bash_profile

的NetBeans Maven的整合更喜欢:

System.getenv("JAVA_HOME") 

前:

System.getProperty("java.home") 
+0

因此,JAVA_HOME的正确值是什么?我面临同样的问题。其实我设置JAVA_HOME =“/ opt/java/jdk1.7.0_75”。当我运行'哪个java'它的值是'/ opt/java/jdk1.7.0_75/bin/java'。除了当我尝试使用svn的maven发布插件时,Maven对我所有的项目都很好。 – irvana 2015-07-03 04:10:58

+0

我想'JAVA_HOME'未设置时可能会自动检测到。或者尝试使用maven中的一个:'mvn -version | grep“Java home” – Tombart 2015-07-03 06:40:37

1

你在命令行上重新定义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 line:

cd ~/src; ~/netbeans-7.3/java/maven/bin/mvn -DarchetypeGroupId=org.codehaus.mojo.archetypes... 
+0

是的,我知道。该命令由IDE生成。我认为它应该采用'$ JAVA_HOME'系统变量的路径,但显然这不是真的。它必须被其他一些设置覆盖。一些Maven的配置可能? – Tombart 2013-03-28 08:05:37

+1

@Tombart你说它是由IDE生成的,所以它与maven或maven配置无关。问题是netbeans或netbeans maven integration – eis 2013-03-28 08:23:12

+0

是啊,看起来像NetBeans错误。它使用不同的路径来创建新项目和编译现有项目 – Tombart 2013-03-28 08:33:10

0

的NetBeans采取JAVA_HOME从Java平台的IDE的定义(见工具/ Java的平台)

,除非您选择自定义平台,IDE使用默认其一是IDE所运行的一个。

所有平台都需要在Tools/Java Platforms对话框中定义,并且验证检查已到位以选择正确的文件夹。

可能你的某些事情发生了变化,定义不正确?

+0

您可能是对的,我最近从apt库安装了java7。但是该平台使用'/ usr/lib/jvm/java-7-oracle/jre/bin/java',这也是默认版本。在一些情况下,也用于Maven集成...这是奇怪的:( – Tombart 2013-03-28 08:38:33

+0

好吧,我已经仔细检查了代码,这里是如何设置JAVA_HOME。首先我们检查Env.JAVA_HOME属性在你的动作defing中,如果我们使用定义不然的话,我们会从IDE中检查JavaPlatforms,并将平台的“java”工具路径与已知的安装文件夹进行匹配,不知道这些文件如何与OS(linux)安装的软件包相匹配,可能它们不会。 ,我们检查环境变量,并从那里使用JAVA_HOME,如果没有定义,最后一点的地方是java.home系统变量。 – mkleint 2013-03-28 09:04:06

+0

Env.JAVA_HOME定义在哪里?在'netbeans.conf'我有这个:'' netbeans_jdkhome =“/ usr/lib/jvm/java-7-oracle”' – Tombart 2013-03-28 09:28:20

0

为Linux下找到的NetBeans的Java的MVN executalble文件/ maven/bin文件夹并添加

from="/bin/bin/java" 
to="/bin/java" 
JAVACMD="${JAVACMD/$from/$to}"