我想打包一段代码,绝对必须在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