Come posso sapere se una classe java è stata compilata per l'uso su un java 6 vm?C'è un modo per dire se una classe è stata compilata per java6?
C'è un modo semplice?
Come posso sapere se una classe java è stata compilata per l'uso su un java 6 vm?C'è un modo per dire se una classe è stata compilata per java6?
C'è un modo semplice?
È nello class file format specification. Lo WP article on the subject include il numero corrente di costanti del numero di versione.
Utilizzando un java decompiler
... che non va bene, almeno non con jd-gui. Questo non offre una vista sui metadati di un file di classe. (rapidamente testato con la V0.3.2 attuale). Quindi con questo metodo dovresti cercare l'uso di classi/metodi che non sono stati disponibili fino a Java 1.6. –
Inexact Andreas_D, la versione del compilatore viene visualizzata da JD-GUI: trascinare e rilasciare un file di classe e spostare il mouse sulla scheda. –
in UNIX,
$ javap -classpath <classpath> -verbose foo.Bar \
| grep -q 'major version: 50' && echo yep || echo nope
grazie @ Matt b.
buona risposta, grazie! – feniix
Stavo cercando qualcosa di simile a un comando, o semplicemente guardando un'intestazione del file o qualcosa del genere. Ma la tua risposta è la più vicina a ciò che stavo cercando finora. – feniix
'javap -verbose -classpath ... com.company.YourClassName' stamperà i numeri di versione per voi –
dato che matt b non ha fatto una risposta vera e nessuno ha dato il numero magico (50), ho aggiunto una mia risposta, e ha reso un po 'più semplice ottenere una risposta sì/no. –