style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Obtener la version del JDK utilizada en la compilación

Hoy fue uno de esos días en que tuve que lidiar con un proyecto legacy el cual está construido con Java 5, la sorpresa que tuve cuando comencé a compilar fue que varias bibliotecas (JAR) estaban compiladas con una version superior. Como necesitaba saber exactamente cuales eran las que necesitaba hacer Downgrade de versión y eran bastantes los JAR's escribí este script que después pensé que seria util para la comunidad.

Básicamente lo que hace es tomar cada archivo y lo descomprime en una carpeta X y obtiene el primer archivo *.class y se ejecuta el comando javap para obtener la version, como eso retorna algo similar a   version: 52 entonces quité lo que no es numero para asignarlo a la variable $v y utilizando arrays asociativos es que se mapea el valor para obtener la versión.

TO_DO:
Mejoraría bastante el performance si se descomprimiera solo el primer archivo *.class que encuentre.

#!/bin/bash
 
LIB_HOME=/path/to/lib/*.jar
 
version['45.3']=1.1
version['46']=1.2
version['47']=1.3
version['48']=1.4
version['49']=5
version['50']=6
version['51']=7
version['52']=8
 
for JAR_FILE in $LIB_HOME
do
    echo "- $(basename $JAR_FILE)"
    rm -rf jar_content
    unzip -qq -n $JAR_FILE -d jar_content
    v=$(javap -verbose $(find . -type f -name '*.class' | sort -n | head -1) | grep major | tr -d '[a-z] +:')
    echo -e "  Java ${version[$v]}\n"
done

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Cid

Muy útil

Gracias, más acerca del mismo tema:

tool-to-read-and-display-java-class-versions

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">