我想打包一段代碼,絕對必須在Java 1.5上運行。如果虛擬機爲1.6 VM,則代碼的一部分可以「增強」程序。Java:最簡單的方法來打包Java 1.5和1.6代碼
基本上它的這種方法:
private long[] findDeadlockedThreads() {
// JDK 1.5 only supports the findMonitorDeadlockedThreads()
// method, so you need to comment out the following three lines
if (mbean.isSynchronizerUsageSupported())
return mbean.findDeadlockedThreads();
else
return mbean.findMonitorDeadlockedThreads();
}
什麼是有這個編譯 1.5,但做1.6方法調用1.6時,最簡單的方法?
在過去,我通過編譯一個獨特的1.6類來完成類似的工作,我將其打包到應用程序中,並在1.6上使用ClassLoader進行實例化(因爲1.6 JVM完美地混合了0x32和0x31類),但我認爲這有點矯枉過正(並且有點痛苦,因爲在構建過程中你必須建立0x31和0x32 .class文件)。
如果我想在1.5上編譯上述方法,該怎麼辦?也許使用反射,但再怎麼(我不熟悉,在所有反射)
注意:如果你好奇,上述方法來自這篇文章:http://www.javaspecialists.eu/archive/Issue130.html
(但我不想「評論三條線」就像文章中的一樣,我希望它能夠在1.5和1.6上編譯和運行)
@Mnementh:OK,但隨後會是什麼反映代碼的樣子? – SyntaxT3rr0r 2010-03-15 16:17:23
我編輯了我的答案以包含反射代碼。 – Mnementh 2010-03-15 16:23:52
@Menmenth:+1好極了......我會盡力在今天下午設置它:) – SyntaxT3rr0r 2010-03-15 16:26:47