2013-03-28 48 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}"