2009-09-16 126 views
1

我試圖在Mac OSX上編譯引用第三方JAR的Grails應用程序。儘管我的系統的JRE和JDK設置爲Java 1.6,但在訪問JAR中的類時總是得到Compilation error: java.lang.UnsupportedClassVersionError: Bad version number in .class file 。此外,在測試現有的Grails應用程序時,應用程序的默認狀態顯示它正在Java 1.6中運行。所以我實際上沒有更多的想法,而是試圖改變Eclipse中的Java設置 - 我認爲這很愚蠢,因爲我沒有使用Eclipse來開發這個應用程序 - 但是呃 - 現在我的應用程序在命令上編譯線路工作得很好!Eclipse JDK設置如何影響系統的JDK設置

任何人都可以解釋一下Eclipse在幕後做了什麼嗎? 我以前手動設置了JAVA_HOME,沒有任何效果。

+0

>我剛換Exclipe中的默認JRE:如果您引用的聲明「安裝的JRE」不應該有任何副作用(除了重新編譯在Eclipse中引用的現有項目...但是您說沒有?那麼爲什麼Eclipse會在第一個地方?) – VonC 2009-09-16 08:34:08

+0

打開Eclipse(和進一步開發t)是我在eclipse中處理env變量時的最後一個想法 - 但我甚至沒有在Eclipse中編譯它 - 我只是將Eclipse中的默認JRE設置更改爲1.6(命令在線JAVA_HOME已經是1.6之前),然後嘗試(沒有多少希望)再次在命令行上編譯它 - 並且它工作正常。我無法解釋我自己。 – david 2009-09-16 09:18:19

回答

4

用於啓動eclipse的JDK(JAVA_HOME)不一定是用於編譯項目的JDK(JAVA_HOME)。

要了解JRE你Y可以爲您的項目選擇,檢查喜好

General > Java Installed JRE 

默認情況下,如果你還沒有添加任何JRE,宣佈將用於啓動eclipse中一個唯一的(這可以在您的eclipse.ini中定義)。
你可以添加任何你想要的其他JRE,包括一個與你的項目兼容的JRE。

http://help.eclipse.org/juno/topic/org.eclipse.jdt.doc.user/tasks/images/task-add_jre_std_vm.PNG

之後,您需要在您的項目屬性,以檢查(或一般偏好)是幹什麼用的JRE,有着怎樣的級別:

http://www.standartux.fr/public/Java/Preferences.png

+0

感謝您的快速回復,但我之前並未使用Eclipse作爲特定項目 - 僅命令行和TextMate!在這裏編譯不起作用,因爲我會用Java 5運行一個Java 6項目的「錯誤版本」錯誤。但是我沒有 - 所有東西看起來都像Java 6一樣。但是接下來我做了和你提到的一樣的東西 - 我只是改變了Exclipse中的默認JRE,但沒有將項目導入到eclipse中,也沒有使用eclipse編譯它。我仍然使用「grails compile」從命令行編譯 - 現在編譯突然成功,沒有任何錯誤。聽起來很奇怪。 – david 2009-09-16 08:21:38