¿Hay alguna forma de averiguar la versión JDK utilizada para crear un archivo .jar?Java - ¿Qué versión tenía un archivo .jar también?
Respuesta
Eso no es posible de manera confiable, ya que ni siquiera necesita un JDK para compilar un archivo JAR; es solo un archivo ZIP con las clases y un archivo de manifiesto dentro.
Lo que puede averiguar es qué versión de the class file format se utiliza. El número de versión principal se asigna a majorJDK comunicados:
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)
Sin embargo, el compilador Java tiene una opción para utilizar el formato de archivo de clase de una versión anterior, que se utiliza con frecuencia para lograr la compatibilidad hacia abajo. Pero si encuentra una versión de archivo de clase con un número mayor de 50, sabe que las clases definitivamente no se compilaron con Java 5 o anterior JDK.
La mayoría de los frascos se fabrican utilizando la herramienta "jar" suministrada que viene con el jdk.
En el JDK de SUN, la herramienta "jar" proporcionada agregará una línea "Creado por" en el archivo META-INF/MANIFEST.MF incrustado.
Esa línea especificará la versión del JDK que creó el archivo JAR (en mi caso "-Creado Por: 1.6.0_17 (Sun Microsystems Inc.)")
Otros proveedores de Java tienden a hacer lo mismo.
¿La tarea Ant jar usa internamente la herramienta jar? Porque creo que más archivos JAR se crean con Ant que a través de la herramienta de línea de comandos. –
En las jarras MANIFEST.MF puede haber una propiedad Build-Jdk que debería ser lo que está buscando.
Acabo de crear algunos archivos de clase y Build-Jdk no está en el archivo MANIFEST.MF. –
Mmm, puede que tenga razón. Estoy mirando un frasco con Created-By: Apache Maven. Sin embargo, los documentos parecen estar de acuerdo contigo. – Jim
Puede extraer los archivos de clase desde el archivo JAR y use el siguiente comando:
javap -verbose SomeClass | grep major
deben darle el número de versión de los archivos de clase.
- 1. ¿Qué versión de javac construyó mi jar?
- 2. Archivo ejecutable Java de JAR
- 3. Ejecutar archivo .jar desde un programa Java
- 4. código Java para crear un archivo JAR
- 5. Java Command Line Jar Archivo
- 6. ¿Qué contiene exactamente un archivo jar?
- 7. Cómo ejecutar un archivo JAR
- 8. ¿Es un archivo Java JAR similar a un conjunto .Net?
- 9. Java - ¿Cómo averiguar de qué archivo Jar proviene una importación?
- 10. ¿Por qué BASIC tenía líneas numeradas?
- 11. leyendo el archivo MANIFEST.MF del archivo jar usando JAVA
- 12. Usando el archivo Java JAR en .NET
- 13. Applet de Java en archivo JAR
- 14. Java: Exponer solo un paquete en un archivo jar
- 15. ¿Cómo crear un archivo jar encriptado?
- 16. Modificar Ejecutar el archivo jar
- 17. Ejecutar un archivo jar en una aplicación Java en ejecución
- 18. Java - Crear una clase desde un archivo Jar
- 19. ¿Cómo puedo ejecutar un archivo .jar en java
- 20. Ejecutar un archivo JAR sin llamar directamente a 'java`
- 21. ¿Cómo compilo un archivo java que tiene dependencias jar?
- 22. ¿Cómo leer un archivo del jar en Java?
- 23. Crear un archivo jar desde un archivo de Scala
- 24. Acceso a un archivo dentro de un archivo .jar
- 25. Java Desktop.open (archivo f) archivo de referencia dentro de JAR?
- 26. Modificación de un archivo jar
- 27. ¿Cómo puedo convertir un archivo JAR en un archivo EXE?
- 28. Agrupar diferentes clases de Java en un solo archivo jar en un solo contenedor
- 29. Cómo ejecutar un archivo jar en Eclipse
- 30. ¿Qué es la firma jar en java?
Si bien todo lo que dices es correcto, esto realmente te dice qué compilador compiló tus clases, no qué herramienta de jar jar-ed tus clases. La mayoría de las veces uno asumiría que provienen del mismo conjunto de herramientas. –
La respuesta http://stackoverflow.com/a/3313839/2776843 es mucho mejor. Comprueba eso también – shamanSK