Errore con Tomcat 6 e Tomcat 5.5 Incompatibilità
Domanda
Ho sviluppato un'applicazione Tomcat utilizza Tomcat 6 per il test. Ora ho schierato a Tomcat 5.5 - quando invoco il servlet ottengo un errore che non ha molto senso per me. Qualcuno sa che cosa provoca questo errore.
eccezione
javax.servlet.ServletException: Errore di allocazione di un'istanza servlet org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:117) org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:174) org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:874) org.apache.coyote.http11.Http11BaseProtocol $ Http11ConnectionHandler.processConnection (Http11BaseProtocol.java:665) org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket (PoolTcpEndpoint.java:528) org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt (LeaderFollowerWorkerThread.java:81) org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable.run (ThreadPool.java:689) java.lang.Thread.run (Thread.java:595) cause
java.lang.UnsupportedClassVersionError: numero di versione Bad nel file .class java.lang.ClassLoader.defineClass1 (metodo natale) java.lang.ClassLoader.defineClass (ClassLoader.java:620) java.security.SecureClassLoader.defineClass (SecureClassLoader.java:124) org.apache.catalina.loader.WebappClassLoader.findClassInternal (WebappClassLoader.java:1853) org.apache.catalina.loader.WebappClassLoader.findClass (WebappClassLoader.java:875) org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1330) org.apache.catalina.loader.WebappClassLoader.loadClass (WebappClassLoader.java:1209) java.security.AccessController.doPrivileged (metodo natale) org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:117) org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:174) org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:874) org.apache.coyote.http11.Http11BaseProtocol $ Http11ConnectionHandler.processConnection (Http11BaseProtocol.java:665) org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket (PoolTcpEndpoint.java:528) org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt (LeaderFollowerWorkerThread.java:81) org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable.run (ThreadPool.java:689) java.lang.Thread.run (Thread.java:595)
Soluzione
Questo non ha nulla a che fare con Tomcat. L'errore è causato dalla differenza .class versione del file.
Molto probabilmente, avete compilato un file .class con java6 e si è tentato di eseguire sul Java5.
La soluzione è sia corsa tomcat5.5 sulla versione più recente di Java, o semplicemente ricompilare.
Altri suggerimenti
Ho appena imbattuto in questo anche. Il problema era in realtà JSP che erano stati compilati in Tomcat 6. Così, quando sono passato a Tomcat 5, questi JSP compilati sono stati la causa del problema. La soluzione è quello di cancellare la directory di lavoro.
Tuttavia, questo sarebbe solo il problema se si specifica CATALINA_BASE che è stato condiviso da Tomcat 6 e 5.