Domanda:
Trova la versione del compilatore di un file di classe Java
user187
2013-03-27 21:24:44 UTC
view on stackexchange narkive permalink

Ho un file di classe java. Come faccio a scoprire la versione del compilatore utilizzata per compilare questo file? Sono su Ubuntu Server 12.04.

Tre risposte:
#1
+22
user187
2013-03-27 21:24:44 UTC
view on stackexchange narkive permalink

JDK include un comando javap . Fornisce molte informazioni, ma puoi usarlo in questo modo:

  javap -verbose yourClass | versione grep  

Output di esempio:

  versione minore: 0 versione principale: 51  

La versione principale ti dice quale versione aveva il compilatore:

  J2SE 8 = 52, J2SE 7 = 51, J2SE 6.0 = 50, J2SE 5.0 = 49, JDK 1.4 = 48, JDK 1.3 = 47, JDK 1.2 = 46 , JDK 1,1 = 45  
per 45, la versione esatta del compilatore dipende dalla versione secondaria. 45.3 sarebbe 1.0.2 Credo.
Questo in realtà ti dice la versione del formato del file di classe, non la versione del compilatore o di un altro strumento utilizzato per generarlo. `javac` supporta il flag` -target` o `--release` per generare file di classe destinati alle versioni precedenti di JDK.
C'è un modo per ottenere la versione ma nel codice?
#2
+15
0xC0000022L
2013-03-27 22:11:02 UTC
view on stackexchange narkive permalink

Di nuovo l'utilità file (1) e libmagic (3) , su cui si basa, può essere tuo amico:

  $ file Gwan.classGwan.class: dati compilati della classe Java, versione 50.0 (Java 1.6)  
E se sei su Windows?
@avgvstvs: quindi puoi ancora ricorrere a qualcosa come Cygwin. Onestamente, se limiti il ​​tuo set di strumenti limitando i tuoi sforzi RCE a un singolo OS host, è colpa tua. In poche parole: sapere quali strumenti utilizzare quando e non essere schizzinoso sulla base di limitazioni arbitrarie e artificiali.
Cygwin introduce una dipendenza non necessaria. Se stai invertendo i file * .class, su * ogni * JVM avrai accesso a `javap`. Non sono d'accordo con il resto di quello che dici, ma sono pigro e se non devo avviare un vm o d / l cygwin sono più felice.
#3
  0
Sachin Kokate
2017-07-27 07:01:51 UTC
view on stackexchange narkive permalink

Stai cercando questo sulla riga di comando (per una classe chiamata MyClass):

Su Unix / Linux:

  javap -verbose MyClass | grep "major"  

Su Windows:

  javap -verbose MyClass | findstr "major"  

Vuoi la versione principale dai risultati. Di seguito sono riportati alcuni valori di esempio:

  • Java 1.2 utilizza la versione principale 46
  • Java 1.3 utilizza la versione principale 47
  • Java 1.4 utilizza la versione principale 48
  • Java 5 utilizza la versione principale 49
  • Java 6 utilizza la versione principale 50
  • Java 7 utilizza la versione principale 51
  • Java 8 utilizza la versione principale 52


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...