2012-06-28 85 views
29

我正在嘗試關注如何使用ant構建和運行應用程序的教程。我已經按照所有步驟創建了構建文件,但是當我嘗試運行ant時,它給了我這個錯誤。JAVA_HOME不指向JDK

BUILD FAILED /home/bilal/tmp/ant/build.xml:19: Unable to find a javac compiler; com.sun.tools.javac.Main is not on the classpath. Perhaps JAVA_HOME does not point to the JDK. It is currently set to "/usr/lib/jvm/java-6-openjdk/jre"

任何想法如何解決這個問題?

回答

24

JAVA_HOME變量指向一個JDK安裝,不JRE

您正在引用運行時環境,而不是開發工具包 - 它找不到編譯器,因爲它不在那裏。

從您發佈的線,其中規定你有開放的JDK你可以刪除JRE在結束:

export JAVA_HOME='/usr/lib/jvm/java-6-openjdk/' 
+0

以及如何找到jdk安裝的位置? – comatose

+0

你在哪裏安裝它? – NimChimpsky

+0

:)以及它是預先安裝在我的mac,有沒有像哪個java或類似的東西,這可以告訴我它在哪裏安裝的命令? – comatose

3

看起來你正在指向JAVA_HOME到這似乎是一個JRE不/usr/lib/jvm/java-6-openjdk/jre一個JDK。嘗試將JAVA_HOME設置爲/usr/lib/jvm/java-6-openjdk

JRE不包含Java編譯器,只有JDK(Java Developer Kit)包含它。

1

您上面的JAVA_HOME只指向JRE,它不包含編譯器。將您的JAVA_HOME設置爲

/usr/lib/jvm/java-6-openjdk 

...並重試。

+0

其他人已經給出了這個答案,你只是重複其他人。 – Ali

12

這是設計。您不能在操作系統環境中使用螞蟻的java.home(這是java.lang.System屬性)與JAVA_HOME的設置互換。您可能試圖斷言Java編譯器的位置與來自不同屬性層的根本不同的值 - 即java.home(來自Ant's Java內部)指向Java運行時環境<any_installed_java_pointed_to_by_ant>/jre,而JDK_HOME(來自OS環境)通常設置爲<DOWNLOADED_AND_INSTALLED_JAVA_DEVELOPMENT_KIT>

見我的問題和答案在這裏瞭解更多詳情:Where does Ant set its 'java.home' (and is it wrong) and is it supposed to append '/jre'?

的解決方案是通過使用${env.JAVA_HOME}訪問Ant內的系統環境屬性。通過將executable屬性設置爲javac路徑並將fork屬性設置爲yes(請參閱Ant's Javac Task Documentation),指定在Javac任務中顯式使用哪個Java。這樣,無論在什麼Java環境中運行Ant,編譯器總是清楚的指定!

+2

這應該被標記爲解決方案 – quinestor

+3

我不會說這是解決方案。它解釋了發生了什麼,而不是如何解決它。我有同樣的問題螞蟻它是螞蟻,而不是我,似乎是交替使用java.home和JAVA_HOME。我的JAVA_HOME是正確的,但Ant似乎正在追加/ jre然後抱怨它! –

+0

@Dave Rager:螞蟻正在按照*設計*。 – ingyhere

24

你安裝java的...

apt-get install default-jre 

但不是JDK ...

apt-get install default-jdk 
+0

@ingyhere按照這裏的建議安裝'default-jdk'解決了我的問題。 –

+0

@Mark Stosberg首先,我刪除了我以前的評論,因爲它意在跟蹤評論到另一個答案。對於後人來說,此頁面上的背景並不清楚。所以,這個想法是,Ant應該在JRE內運行,而不管。但是,要編譯應用程序,需要JDK。 Ant Javac任務應該(或者至少以前)默認通過嗅探內部屬性來查找Java編譯器(javac)。所以,如果沒有明確指定Javac「可執行」屬性,它可能會找到錯誤的東西。安裝JDK是先決條件,當然,沒有問題。 – ingyhere

1

我有一個類似的問題,原來的問題是有兩個版本OpenJDK的7 &。答案來自於R-高層在Ubuntu論壇(http://ubuntuforums.org/showthread.php?t=1977619)---剛剛卸載版本6:

sudo apt-get remove openjdk-6-*

確保JAVA_HOME和CLASSPATH都沒有設置任何東西,因爲這是不實際的問題。

1

我正在使用Windows 7並且一直在努力解決同一問題。我通過更改我的環境變量來修復它。

更改環境變量click here

我加了「;%JAVA_HOME%/ BIN」到的變量路徑的終點,並增加了新的「JAVA_HOME」變量,並將其值設置爲我的JDK「C的位置:\ Program Files \ Java \ jdk1.8.0_11「。之後,我重新啓動了我的Node.js命令提示符並工作。

請注意,您的JDK目錄可能與我的不同。也取決於您的設置,您可能需要在設置環境變量後重新啓動計算機。

0

爲CentOS蔭-y安裝Java-1.7.0-的openjdk-devel.x86_64

和更新JAVA_HOME =/usr/lib中/ JVM/java的1.7.0-openjdk.x86-64

+1

嘗試格式化您的命令,以便閱讀。 – DanM7

0

當試圖在基本操作系統Luna(基於Ubuntu 12.04 LTS源代碼)上使用Meteor 1.0運行Android模擬器時,遇到了此問題。

安裝了openjdk-6-jdk,以及jre。最後,不期望任何的成功,我想:

sudo apt-get remove openjdk-6-* 

這導致了充分預期的錯誤,所以我遵循了

sudo apt-get install openjdk-6-jdk 

和事情的來龍去脈。去搞清楚。

4

我知道這個問題是舊的,但接受的答案不再工作,因爲這是谷歌搜索的拳頭鏈接我會告訴我如何解決這個問題。

月食使用Ubuntu:

去窗口 - >首選項 - > Ant-> Runtime->選擇Ant_Home_Entries並單擊添加外部JAR然後在文件瀏覽器在您的JDK是(默認發現是在/ usr/lib/jvm /),並在您的jdk的lib文件夾中找到tool.jar。選擇這一個,然後點擊應用。

嘗試建立你的項目和事情應該工作!

請注意:我長期沒有使用ant,但如果有人被困在此,我需要它用於ycsb couchbase工作負載生成器(http://www.couchbase.com/wiki/display/couchbase/Load+Generator+Setup)。

0

在Ubuntu 14.04中,我發現兩個部分,以解決問題:

  1. 從環境變量刪除/jre。對我來說:export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/
  2. 安裝JDK和JRE的:sudo apt-get install default-jdk
1

我只是複製工具。jar文件從JDK \ lib文件夾複製到JRE \ lib文件夾。從那時起,它就像一個冠軍。

+0

這不提供問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你總是可以評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/help/whats-reputation),你會能夠[評論任何帖子](http://stackoverflow.com/help/privileges/comment)。 - [來自評論](/ review/low-quality-posts/10687279) – mjp66

+0

@ mjp66,你有沒有試過。它沒有提供回答這個問題?怎麼來的?我們不需要澄清任何一個曾經面臨問題的作者都可以澄清我的信仰。什麼是足夠的聲譽? –

+0

這是最好的答案!它的工作,並不需要我不知道我應該寫在哪裏的命令 – Maude

0

一旦你更新作爲回答規定的JAVA_HOME路徑,你應該這樣做:

$source ~/.bashrc 

這將刷新的.bashrc顯示在$ JAVA_HOME更新的路徑,當你再次檢查。

0

執行:

$ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-3.b16.el6_9.x86_64 

,並設置操作系統環境:

vi /etc/environment 

然後按照下列步驟操作:

  1. 按i
  2. 粘貼

    JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.141-3.b16.el6_9.x86_64 
    
  3. 按esc

  4. 新聞:WQ
1

我遇到了在RHEL這個問題,我的 「JAVA_HOME =/usr/lib目錄/ JVM/JAVA-1.8.0-OpenJDK的」(這是一個符號鏈接)和螞蟻抱怨。

MY此解決方案是使用在JAVA_HOME真實JDK路徑,如:

JAVA_HOME =/usr/lib中/ JVM/java的1.8.0-的openjdk-1.8.0.161-0.b14.el7_4 .x86_64

它適合我。

相關問題