2010-12-18 88 views
0

在ActiveMQ的文檔,它提到:ActiveMQ的Java版本

注:可以的ActiveMQ與Java 1.4.x系統上運行,但是,Java 1.5,需要編譯/構建的ActiveMQ ..

這怎麼可能?如果它是使用1.5編譯的,並且它是在1.4中執行的,我們是不是應該得到'Unsupported major.minor version'異常?

回答

0

難道你不認爲它不是由ActiveMQ本身引起的,而是兩個Java版本(1.4和1.5)和編譯Java1.5源代碼的方式之間的差異造成的。所有的Java5新穎功能都被翻譯成Java 1.4字節碼(例如,閱讀用於實現Java1.5泛型的類型刪除技術)。

我不是100%肯定的;這是我第一次想到當我讀你的問題。

+0

請問您能解釋一下嗎?當我嘗試用1.5編譯一個主類並運行1.4時,它會拋出錯誤。 – Victor 2010-12-20 07:24:39

+0

@Kaushik:呃,你沒有提到你得到錯誤。你能把它粘貼在這裏嗎? – Lukasz 2010-12-20 09:06:55

0

有一些技術可以將.cl​​ass-Files(Java字節碼)轉換爲另一個較早的JVM。例如,Ist使用迭代器將新的for-Loop(for(X x:xs))轉換爲該循環。如果此轉換過程未將它們添加到目標-JDK兼容版本中,則對新JDK-Classes的引用可能無效。

我已經將此視爲一個maven構建器。當使用這個時,我能夠在Java 1.5中爲舊的WebSphere Server 1.4編寫portlet。 Maven在構建戰爭文件時爲我做了一切。輸出是一個portlet-1.0.0.java4.war和一個portlet-1.0.0.java5.war。

請參閱Retrotranslator:http://retrotranslator.sourceforge.net/