2009-10-06 12 views
9

estoy recibiendo la siguiente excepción cada vez que me conecto a mi solicitud ...versión no compatible mayor.menor 49,0

javax.servlet.ServletException: com/sun/org/apache/xalan/interno/XSLTC/Trax/TransformerFactoryImpl (versión no compatible mayor.menor 49,0)

lo que significa esto y cómo puedo resolver el problema?

Respuesta

14

Tiene una discrepancia entre su JVM que está utilizando para ejecutar .class y la versión de Java utilizada para compilar .class. La JVM que lo ejecuta es una versión anterior de la JVM utilizada para compilar esa clase.

Como se detalla en here, tiene una clase de versión 1.5 que está intentando ejecutar en una JVM anterior.

EDITAR: WAS 5.1 utiliza JDK 1.4, it would appear.

+0

estoy usando WAS 5.1 y el JRE instalado en mi sistema local es JRE 1.5.0_06 – Gourav

+0

cualquier posible solución .. ?? – Gourav

+0

@Gourav: ¿Qué dice correr 'java -version'? – Powerlord

2

Tiene un código compilado con las características de Java 5 que está intentando ejecutar en una JVM 1.4 o anterior. Verifique que su variable JAVA_HOME esté apuntando a un JDK 1.5 o posterior.

Actualización: En su comentario dice que está utilizando WAS 5.1. WAS 5.1 no es compatible con Java 5, desde la memoria debe estar en WAS 6.1 para usar Java 5 (buscando referencia ...)

1

Si construye sus clases con una versión superior del JDK para un menor La versión de JAVA utiliza los modificadores de fuente y de destino del compilador javac. Algunos clientes necesitan una versión menor de Java, p. 1.4, mientras desarrollas con 1.6. -source y -target son remedio para este szenario. Puede leer el muy bueno paper sobre el código de bytes frente a problemas de versiones del código fuente de Alex Buckley.

Pero como TransformerFactoryImpl es una clase interna de Sun, verifique su JAVA_HOME para su contenedor, pero esto es específico del contenedor.

+0

Desafortunadamente, javac se negará a trabajar con un conjunto de recursos a una versión más alta que -target, y en cualquier caso no ayudaría a usar partes de la biblioteca API que aún no están presentes en el JRE anterior. –

7

Su código fue compilado con Java 1.5 y su tratando de ejecutarlo con Java 1.4 (o inferior)

La solución es

a) Run it with Java1.5 (perhaps using WAS 6+) 
b) Recompile it with Java 1.4 

o

c) Recompile it with Java.15 but specifying the -target flag (javac -target 1.4 ....) 

El punto es, Está tratando de ejecutar 1.5 bytecode en un 1.4 vm

0

Use sudo update-alternatives --config java y configure la versión que desee usar.

1

Esto ocurre cuando ha compilado su código en una máquina que usa una versión JDK diferente a la que acaba ejecutando el código. Asegúrese de utilizar la misma versión JDK en estos cuadros diferentes.

Cuestiones relacionadas