Quiero empaquetar un código que absolutamente debe ejecutar en Java 1.5. Hay una parte del código donde el programa puede ser "mejorado" si la VM es una máquina virtual de 1.6.Java: forma más fácil de empaquetar código Java 1.5 y 1.6
Básicamente se trata de este método:
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();
}
¿Cuál sería manera más fácil de tener esta compilar de 1,5 y, sin embargo hacer el método 1.6 llama cuando en 1,6?
En el pasado he hecho algo similar al compilar una clase 1.6 única que empacaría con mi aplicación y crear instancias usando un ClassLoader cuando estaba en 1.6 (porque una 1.6 JVM está perfectamente bien mezclando clases 0x32 y 0x31), pero Creo que es un poco exagerado (y un poco doloroso porque durante el proceso de compilación tienes que compilar ambos archivos .class 0x31 y 0x32).
¿Cómo debo ir si quiero compilar el método anterior en 1.5? Tal vez el uso de la reflexión, pero entonces, ¿cómo (no estoy familiarizado en absoluto con la reflexión)
Nota: si usted es curioso, el método anterior proviene de este artículo: http://www.javaspecialists.eu/archive/Issue130.html
(pero yo no quiero "comentar las tres líneas" como en el artículo, quiero que compile y se ejecute en 1.5 y 1.6)
@Mnementh: bien, pero luego lo haría el aspecto código de reflexión como ? – SyntaxT3rr0r
He editado mi respuesta para incluir el código de reflexión. – Mnementh
@Mnementh: +1 genial ... Intentaré configurarlo esta tarde :) – SyntaxT3rr0r