after happily using tomcat 6/java6, we had to move back to tomcat 5/java5. Unfortunately, it seems that one jar or .class files not yet compiled under java5 got there too. Suggestion: in at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1815) catch UnsupportedClassVersionError and re-throw it after adding hints with which class sought/jar file it happens! java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432) Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class file at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:620) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1815) at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:869) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1322) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1201) at org.apache.catalina.core.StandardWrapper$1.run(StandardWrapper.java:1017) at java.security.AccessController.doPrivileged(Native Method) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1013) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:932) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3951) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4225) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013) at org.apache.catalina.core.StandardHost.start(StandardHost.java:718) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442) at org.apache.catalina.core.StandardService.start(StandardService.java:450) at org.apache.catalina.core.StandardServer.start(StandardServer.java:709) at org.apache.catalina.startup.Catalina.start(Catalina.java:551) ... 6 more
Created attachment 21704 [details] Lsjar.java this is an approach to determine whether your jar files are the culprits so, if there is java5 the requirement, you shouldn't see a major of 50 java -jar lsjar.jar -dir -jvmVersion /usr/share/tomcat/shared/lib/ | grep -v 48 | grep -v 46 | grep -v 49 | grep -v 47 | grep -v 45 -- in my case, they aren't :(
I have patched trunk and proposed it for inclusion in 6.0.x
This has been fixed in 6.0.x and will be in the 6.0.17 onwards.
Created attachment 21822 [details] Lsjar2.java Some class files of a jar may not have been compiled with the same version of Java than the others. It therefore may be useful to check the version of each class file contained in a jar.
Comment on attachment 21822 [details] Lsjar2.java Added an -all option to Lsjar.java that allow to check every class file in a jar.