2012-06-15 100 views
0

使用Java 1.5編譯器,當我嘗試編譯依賴於與Java 1.6的編譯的類的Java類,我得到這個錯誤:如何將Java 1.5類與Java 1.6類連接起來?

in/javac Java15.java 
Java15.java:5: cannot access Java16 
bad class file: ./Java16.class 
class file has wrong version 50.0, should be 49.0 
Please remove or make sure it appears in the correct subdirectory of the classpath. 
     String java16result = Java16.test(); 
          ^
1 error 

反向工程(使用Java 1.6編譯器,我可以鏈接到一個Java 1.5類。)

有沒有任何一種解決方法呢?

+3

1.5編譯器無法理解1.6編譯器生成的類文件。 –

回答

0

我工作的解決方案是使用java.lang.Runtime.exec從Java 1.5程序執行Java 1.6程序。

我知道這可能不是大多數情況下最好的解決方案,但在我的情況下(我需要從使用Java 1.5的Oracle數據庫調用Java 1.6程序),它工作正常,並且不需要任何更改我當前的數據庫安裝。

3

我不認爲你想要做什麼是可能的。 Java 1.6具有Java 1.5不知道的特性,因此不知道如何執行它們。

4

「解決方法」根本就沒有這麼做 - 如果您想用Java 1.5編譯某些東西,也可以使用Java 1.5編譯它的所有依賴關係。

0

使用java 1.6編譯器和運行時。

您也可以反編譯1.6代碼並用1.5編譯器重新編譯它。

我相信1.5和1.6類文件只有一個小的區別。您可以將.cl​​ass文件開頭的魔術字節更改爲1.5並使其工作。雖然沒有保證,但我不會這樣做。

+0

不幸的是,我需要將它導入到太依賴於Java 1.5的Oracle數據庫中。看起來它要麼將所有的Oracle重新編譯爲1.6(硬),要麼重新編譯我的類和它們所有的依賴關係(使用1.5(更簡單一些))。 –

+1

您可以升級Oracle正在使用的Java。這可能比使用Java 5更難,但你應該考慮它。 Java 5非常陳舊 - Java 6於2006年發佈,Java 5可能有很多未固定的安全漏洞。 –

相關問題