2011-06-23 84 views
2

我使用Ant來編譯Java。項目必須使用JDK 1.5進行編譯,但是代碼的某些部分引用使用JDK 1.6版本編譯的程序包。 我設置JAVA_HOME到1.5,誤差在此引用拋出JDK編譯器版本問題

[javac的]類文件版本錯誤50.0,應該是49.0

有什麼出路,而不降級的參考版本1.5

回答

0

這樣的想法:

您使用使用JDK 6,可使用Java 6中引入了一些功能(即不是Java的以前版本的一部分)

當你已經編譯庫使用JDK 5編譯和運行,當遇到這個「新」特性時,你期望編譯器(和運行時)如何執行? JDK 5不知道這個特性並且會「困惑」

爲了避免在運行時產生混淆,編譯本身失敗了。

你有兩個選擇:

  • 使用JDK 6
  • 讓你的庫

的JDK 5編譯版本,如果你的項目使用JDK 6和庫編譯您的項目是用JDK 5編譯的,那麼你就不會因爲向後兼容性而面臨這個問題。

+0

更具體地說,代碼只是使用那個JDK 1.6版本的jar。當Java級別設置爲1.5時,NetBeans成功編譯項目 – Pushparaj

+0

@Pushparaj您使用NetBeans的編譯器以及您正在使用的編譯器 - 他們是一樣的嗎? – Nivas

4

你所問的是不可能的。您應該使用JDK 1.5編譯您的庫。

1

一旦Java已經編譯成特定版本,就不能在舊版本的Java上使用該版本。

您正在使用的軟件包可能有適用於舊版本Java的版本,或者您可能能夠獲得源代碼並使用舊版本進行重新編譯(如果它不使用任何Java 6庫/功能)。

+0

在NetBeans IDE上沒有問題的情況下也一樣。我需要這個來支持命令行 – Pushparaj

+0

@Pushparaj _同樣在NetBeans IDE上沒有問題的共享你確定NetBeans使用的是JDK 5嗎? – Nivas