C'è un modo per scoprire la versione JDK utilizzata per creare un file .jar?Java: quale versione è stata anche costruita con un file .jar?
risposta
Questo non è possibile in modo affidabile, poiché non è nemmeno necessario un JDK per creare un file JAR - è solo un file ZIP con le classi e un file manifest all'interno.
Che cosa si può scoprire è la versione di the class file format utilizzata. Il numero di versione principale mappe di majorJDK release:
J2SE 6.0 = 50 (0x32 hex)
J2SE 5.0 = 49 (0x31 hex)
JDK 1.4 = 48 (0x30 hex)
JDK 1.3 = 47 (0x2F hex)
JDK 1.2 = 46 (0x2E hex)
JDK 1.1 = 45 (0x2D hex)
Tuttavia, il compilatore Java è la possibilità di utilizzare il formato di file di classe di una versione precedente, che viene spesso utilizzato per ottenere la compatibilità verso il basso. Ma se trovi un numero maggiore di 50 nella versione del file di classe, sai che le classi non sono state compilate con un JDK Java 5 o precedente.
La maggior parte dei vasi viene creata utilizzando lo strumento "jar" fornito con jdk.
Nel JDK di SUN lo strumento "jar" fornito aggiungerà una riga "Created-By" nel file META-INF/MANIFEST.MF incorporato.
Quella linea specificherà la versione del JDK che ha creato il JAR (nel mio caso "Creato-By: 1.6.0_17 (Sun Microsystems Inc.)")
Altri fornitori Java tendono a fare lo stesso.
Il task Ant jar utilizza lo strumento jar internamente? Perché penso che più file JAR siano costruiti con Ant piuttosto che tramite lo strumento da riga di comando. –
In Jars MANIFEST.MF potrebbe esserci una proprietà Build-Jdk che dovrebbe essere quello che stai cercando.
Ho appena inserito alcuni file di classe e Build-Jdk non è presente nel file MANIFEST.MF. –
Mmm, potresti avere ragione. Sto guardando un barattolo con Created-By: Apache Maven. Tuttavia, i documenti sembrano essere d'accordo con te. – Jim
È possibile estrarre i file di classe dal file jar e utilizzare il seguente comando:
javap -verbose SomeClass | grep major
dovrebbe dare il numero di versione dei file di classe.
- 1. Come scoprire su quale versione di binari è stata costruita un'applicazione di rotaie esistente?
- 2. quale file .jar ha javax.xml.stream. *?
- 3. come verificare quale versione di nltk, scikit è stata installata?
- 4. PIL: ImportError: L'estensione _imaging è stata costruita per un'altra versione di cuscino o PIL
- 5. Java - Come scoprire da quale file Jar proviene un'importazione?
- 6. Quale versione di Java è necessario per JUnit 4.8
- 7. Determina quale file JAR è una classe da
- 8. codice Java per creare un file JAR
- 9. Esegui file .jar da un programma Java
- 10. Quale versione PHP è supportata da quale versione di TYPO3?
- 11. In quale file è stata definita la combinazione di tasti?
- 12. Come si compila un file java con dipendenze jar?
- 13. C'è un modo per sapere quale versione groovy è stata utilizzata nel progetto Grails?
- 14. Verifica quale versione di DirectX è installata
- 15. È possibile aggiungere più jar in un file jar e quindi avviare il file jar
- 16. Quale versione di JaspeReports supporta Java 8?
- 17. UITableView - quale riga è stata selezionata?
- 18. Rilevare quale query reattiva è stata attivata
- 19. Quale delle due eccezioni è stata chiamata?
- 20. Aiuto con Ruby Koans # 6 - Quale eccezione è stata rilevata?
- 21. Perché "questa app è stata costruita con una configurazione errata" si è verificato un errore in alcuni telefoni?
- 22. Java - file.length() restituisce anche se il file non è leggibile
- 23. Eclipse: il progetto non è stata costruita in quanto il file di origine ... non poteva essere letta
- 24. Emoji problema unicode con java .jar
- 25. Come eseguire un file JAR
- 26. Quale file di classe java verrà chiamato se la stessa classe è imballata in due file jar?
- 27. Controllare i file JAR (librerie) nello strumento Controllo versione: è una buona pratica?
- 28. È un percorso di classe estesa di file jar multipli (forse anche inutilizzati) inefficiente
- 29. Come scoprire quale versione del pacchetto è stata caricata in R?
- 30. Come posso sapere quale versione di Visual Studio è stata utilizzata per l'ultima volta su un progetto?
Mentre tutto ciò che dici è corretto, questo in realtà ti dice quale compilatore ha compilato le tue classi, non quale strumento jar ha modificato le tue classi. La maggior parte delle volte si presume che provengano dallo stesso toolkit. –
La risposta http://stackoverflow.com/a/3313839/2776843 è molto meglio. Controlla anche questo. – shamanSK