¿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