Fernando Guillén

un Desarrollador Web Freelance

cabecera decorativa

nada por aquí y nada por allá ó el desarrollo de software como expresión artística.

¿Cómo saber con que versión de java se ha compilado una clase?

Cuándo tienes varios entornos de producción, unos más actualizados que otros, tienes que tener cuidado de con qué compilador generas los .class para cada Tomcat.

En mi caso en desarrollo tengo java1.6 pero tengo un entorno de producción que requiere que se le carguen las clases compiladas para 1.4 o no funcionará.

El lío que tengo en el eclipse de configuraciones para cada proyecto es bastante engorroso y nunca sé si ha puesto bien cada atributo de las propiedades, sin contar con que Ant tiene también sus propias configuraciones para el compilador.

Al final no sé si he generado bien el .war para este entorno o no y es un poco cabreante subir un .war de 8 megas a producción ponerlo todo bien y ver como se queja el Tomcat al arrancar para volver a recompilar y volver a probar.

He encontrado este truco para saber si he compilado bien las clases:

http://dpinya.blogspot.com/2007/10/como-saber-con-qu-jdk-se-ha-compilado.html

http://blogs.sun.com/sundararajan/entry/thou_shall_know_the_class

En resumen, basta con ejecutar en consola:

$ file Clase.class
Clase.class: compiled Java class data, version 48.0

El dato importante es “version 48.0″ hay que buscar en la siguiente tabla para saber con qué versión fué compilado:

<48 Requires JRE 1.3.1 or later
=48 Requires JRE 1.4.2 or later
=49 Requires JRE 1.5 or later
=50 Requires JRE 6 or later
>50 Requires JRE 7 or later

2 Comentarios to “¿Cómo saber con que versión de java se ha compilado una clase?”
  1. Javier Says:

    Dale buen uso a la tarea javac de Ant, y no tendrás más problemas de ese tipo.

    http://ant.apache.org/manual/CoreTasks/javac.html

    Un abrazo, Fernando

  2. fguillen Says:

    Sip, Javi, ya.. lo tengo así:

    <javac destdir=”./bin”
    classpathref=”classpath”
    debug=”true”
    deprecation=”true”
    compiler=”javac1.4″
    optimize=”true”
    target=”1.4″
    source=”1.4″
    >
    <src path=”${src.dir}”/>
    </javac>

    Pero a veces compilo con el Eclipse.. y a veces compila un compañero. Vamos que la única manera de saber si el .war que tengo está bien compilado en mirando la versión del .class.

    Gracias ;)

Deja un Comentario

un Desarrollador Web Freelance is proudly powered by WordPress
Entries (RSS) and Comments (RSS).