Voglio impacchettare un pezzo di codice che assolutamente deve essere eseguito su Java 1.5. C'è una parte del codice in cui il programma può essere "migliorato" se la VM è una VM di 1,6.Java: il modo più semplice per impacchettare entrambi i codici Java 1.5 e 1.6
In sostanza è questo metodo:
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();
}
Quale sarebbe modo più semplice per avere questo compilare su 1,5 eppure fare il metodo 1.6 chiamate quando il 1.6?
In passato ho fatto qualcosa di simile compilando una classe 1.6 unica che avrei assemblato con la mia app e istanziato usando un ClassLoader quando su 1.6 (perché una JVM 1.6 sta perfettamente bene combinando le classi 0x32 e 0x31), ma Penso che sia un po 'eccessivo (e un po' doloroso perché durante il processo di compilazione devi creare sia i file 0x31 che 0x32 .class).
Come devo andare se volessi compilare il metodo sopra su 1.5? Forse utilizzando la riflessione, ma allora come (io non sono a conoscenza a tutti, con la riflessione)
Nota: se siete curiosi, il metodo di cui sopra viene da questo articolo: http://www.javaspecialists.eu/archive/Issue130.html
(ma io non voglio "commenta le tre righe" come nell'articolo, voglio che compili e funzioni sia su 1.5 che su 1.6)
@Mnementh: ok, ma poi che cosa sarebbe il codice riflessione assomigliare ? – SyntaxT3rr0r
Ho modificato la mia risposta per includere il reflection-code. – Mnementh
@Mnementh: +1 ottimo ... Proverò a configurarlo questo pomeriggio :) – SyntaxT3rr0r