2010-07-28 143 views
3

這是當mvn從CruiseControl的執行什麼我越來越:爲什麼maven忽略我的JAVA_HOME?

 
Unable to locate the Javac Compiler in: 
    /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/../lib/tools.jar 
Please ensure you are using JDK 1.4 or above and 
not a JRE (the com.sun.tools.javac.Main class is required). 
In most cases you can change the location of your Java 
installation by setting the JAVA_HOME environment variable. 

與此同時,從命令行啓動它給出正確的結果。爲什麼mvn會進入這個tools.jar?爲什麼它忽略我的JAVA_HOME?我該如何解決它?

我不知道當從CC啓動mvn時,JAVA_HOME/PATH的值是多少。我真的很想獲得這些信息,但我不知道如何。 (這是CentOS的5.4)CC本身是從用戶cc開始,env該用戶給了我:

JAVA_HOME=/usr/java/default 
PATH=/usr/local/maven/bin:/usr/local/bin:/bin:/usr/bin:/home/cc/bin 

回答

1

假設你有一臺linux機器。

  1. 看一看/usr/bin/java,這是一個符號鏈接。看看這個符號鏈接的目標在哪裏(在我的情況下,目標是在這個位置/etc/alternatives/java
  2. /etc/alternatives/java也是符號鏈接。創建與「適當」JVM(例如Sun的JVM)的新符號鏈接
  3. 用新創建的符號鏈接替換/etc/alternatives/java

這適用於Ubuntu發行版。有一個自動的方式該怎麼做,但我忘了,它實際上:d

+1

這是:'/ usr/sbin/alternatives --install/usr/bin/java java/usr/java/latest/bin/java 2'? – yegor256 2010-07-28 09:06:23

2

爲什麼MVN是進入這個的tools.jar?

由於tools.jar包含用於以編程調用javac編譯com.sun.tools.javac.Main類。

爲什麼無視我的JAVA_HOME

這就是 「有趣」 的部分(因爲它是在外面打工CC)。你是否與專職用戶一起運行CC?如果是,爲用戶定義的JAVA_HOME?什麼是

echo $JAVA_HOME -or- 
echo $PATH 
+0

我剛剛更新了我提出的問題。一切工作正常以外的CC .. – yegor256 2010-07-28 08:16:14

11

我有同樣的問題,一個簡單的重新安裝Java JDK的解決了這個問題對我來說:

apt-get install openjdk-6-jdk

0

輸入以下行到太陽版

sudo update-java-alternatives -s java-6-sun 
0

我最終不得不指出Ubuntu上的Oracle Java 7安裝。 Gradle(1.6)似乎並不喜歡sym鏈接。所以我編輯了/opt/gradle/gradle-1.6/bin/gradle文件,在腳本的頂部導出一個/ usr/lib/jvm/java-7-oracle的JAVA_HOME。現在很開心。

0

我知道這是遠遠過時的問題,但我結束了谷歌搜索同樣的問題。 所以這個解決方案也可以正常工作:在「javac」任務中放置「fork ='yes'」。此javac任務變爲遵守JAVA_HOME設置。