-
Bug
-
Resolution: Duplicate
-
Major
-
None
-
Apache Tomcat 7.0.27 running on jdk1.7.0_03
Jenkins ver. 1.471
windows server 2008 64 bits
-
Powered by SuggestiMate
Some Projects used to build with jenkins 1.461 or 1.471(on Tomcat 6.0.32/jdk 6) but they no longer build on Jenkins with Tomcat 7.0.27 /jdk 7.
Only projects that need jkd 5 and maven 2.2.1 to build are concerned.
Error Caused by: java.lang.ClassFormatError: Failed to load org.kohsuke.stapler.Stapler
See included stacktrace for more information
- duplicates
-
JENKINS-16920 Running native Maven projects on JDK 5 using Jenkins hosted on Tomcat 7 fails
-
- Resolved
-
[JENKINS-14143] Can't build project with jdk 5 when jenkins runs on tomcat 7
No I'am running jenkins on tomcat 7 with jdk1.7.0_03
Then I launched a maven 2 build with java 5
Maybe I was not clear explaining that:
Maven process running 1.5 is trying to load HttpServlet, which is compiled with version 1.6 of java.
Most likely HttpServlet is being loaded from Tomcat, as JDK does not include javax.servlet by default.
You can confirm it by prepending servlet.jar from Tomcat 6 in Maven classpath.
Think about from the perspective of what was changed in the system when it became dysfunctional. Tomcat was changed and simultaneously jdk was changed.
Try to run your set-up with jdk6/tomcat7 and jdk7/tomcat6
I bet that the latter will work.
Yes it works perfectly with tomcat 6.
I mentionned that jdk 5 builds fail when jenkins runs on tomcat 7 (whereas jdk 6 builds are OK), because I thought this information would help to improve the tomcat 7 support for jenkins.
François,
If you really must run your jdk5 builds on Tomcat 7, you will have to make Tomcat 6 libraries available to your jdk5 process. That's all I can recommend here.
I will probably stay a bit longer with tomcat 6. Thanks for the answer anyway
I can't understand why this issue is resolved as not a defect. I certainly want to be able to use Jenkins on Tomcat 7 using a build job with JDK 5.
Here a stack trace from Jenkins 1.477 on Tomcat 7 runnning a JDK 5 build.
java.io.IOException: Remote call on Channel to Maven [/opt/jdk1.5.0_17/bin/java, -Xmx1024m, -Xms512m, -XX:MaxPermSize=512m, -Djava.awt.headless=true, -cp, /home/jenkins/jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-agent-1.2.jar:/home/jenkins/tools/maven/maven-3.0.3/boot/plexus-classworlds-2.4.jar, org.jvnet.hudson.maven3.agent.Maven3Main, /home/jenkins/tools/maven/maven-3.0.3, /home/jenkins/tomcat7/webapps/jenkins/WEB-INF/lib/remoting-2.16.jar, /home/jenkins/jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-1.2.jar, 50806] failed at hudson.remoting.Channel.call(Channel.java:672) at hudson.maven.ProcessCache$MavenProcess.call(ProcessCache.java:156) at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:791) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1502) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:477) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:236) Caused by: java.lang.ClassFormatError: Failed to load org.kohsuke.stapler.Stapler at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:154) at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:131) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at hudson.model.Result.<clinit>(Result.java:191) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:164) at $Proxy2.<clinit>(Unknown Source) at sun.reflect.GeneratedSerializationConstructorAccessor36.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Constructor.java:494) at java.io.ObjectStreamClass.newInstance(ObjectStreamClass.java:896) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1704) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348) at java.util.HashMap.readObject(HashMap.java:1067) 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 java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1809) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1908) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1832) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348) at hudson.remoting.UserRequest.deserialize(UserRequest.java:182) at hudson.remoting.UserRequest.perform(UserRequest.java:98) at hudson.remoting.UserRequest.perform(UserRequest.java:48) at hudson.remoting.Request$2.run(Request.java:326) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269) at java.util.concurrent.FutureTask.run(FutureTask.java:123) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) at java.lang.Thread.run(Thread.java:595) Caused by: java.lang.ClassFormatError: Failed to load javax.servlet.http.HttpServlet at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:154) at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:131) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:620) at java.lang.ClassLoader.defineClass(ClassLoader.java:465) at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:152) ... 42 more 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.lang.ClassLoader.defineClass(ClassLoader.java:465) at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:152) ... 50 more
Hi,
I'm reopening this issue because it really seams to be a defect.
I encountered the same problem running Jenkins LTS 1.480.2 on Tomcat 7 with JDK6
I want to build a maven project with the maven 2/3 job type using a JDK 1.5.
Here is the complete stack trace i get :
java.io.IOException: Remote call on Channel to Maven [C:\Applications\Java\JDK\JDK1.5.0/bin/java, -Dm3plugin.lib=E:\.jenkins\plugins\artifactory\WEB-INF\lib, -cp, E:\.jenkins\plugins\maven-plugin\WEB-INF\lib\maven3-agent-1.2.jar;C:\maven\boot\plexus-classworlds-2.4.jar, org.jvnet.hudson.maven3.agent.Maven3Main, C:\maven, C:\TomcatInstance\JENKINS\webapps\ci\WEB-INF\lib\remoting-2.17.jar, E:\.jenkins\plugins\maven-plugin\WEB-INF\lib\maven3-interceptor-1.2.jar, 51083] failed at hudson.remoting.Channel.call(Channel.java:673) at hudson.maven.ProcessCache$MavenProcess.call(ProcessCache.java:156) at hudson.maven.MavenModuleSetBuild$MavenModuleSetBuildExecution.doRun(MavenModuleSetBuild.java:791) at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499) at hudson.model.Run.execute(Run.java:1502) at hudson.maven.MavenModuleSetBuild.run(MavenModuleSetBuild.java:477) at hudson.model.ResourceController.execute(ResourceController.java:88) at hudson.model.Executor.run(Executor.java:236) Caused by: java.lang.ClassFormatError: Failed to load org.kohsuke.stapler.Stapler at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:154) at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:131) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) at hudson.model.Result.<clinit>(Result.java:191) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:164) at $Proxy2.<clinit>(Unknown Source) at sun.reflect.GeneratedSerializationConstructorAccessor37.newInstance(Unknown Source) at java.lang.reflect.Constructor.newInstance(Constructor.java:501) at java.io.ObjectStreamClass.newInstance(ObjectStreamClass.java:896) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1704) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1910) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1834) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348) at java.util.HashMap.readObject(HashMap.java:1067) 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:592) at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:946) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1812) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1910) at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1834) at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1719) at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305) at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348) at hudson.remoting.UserRequest.deserialize(UserRequest.java:182) at hudson.remoting.UserRequest.perform(UserRequest.java:98) at hudson.remoting.UserRequest.perform(UserRequest.java:48) at hudson.remoting.Request$2.run(Request.java:326) at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269) at java.util.concurrent.FutureTask.run(FutureTask.java:123) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676) at java.lang.Thread.run(Thread.java:595) Caused by: java.lang.ClassFormatError: Failed to load javax.servlet.http.HttpServlet at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:154) at hudson.remoting.RemoteClassLoader.findClass(RemoteClassLoader.java:131) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:621) at java.lang.ClassLoader.defineClass(ClassLoader.java:466) at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:152) ... 42 more 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:621) at java.lang.ClassLoader.defineClass(ClassLoader.java:466) at hudson.remoting.RemoteClassLoader.loadClassFile(RemoteClassLoader.java:152) ... 50 more
However, when i configure my project using a free style job type and the same JDK 1.5, it builds successfully.
The issue seams to be related to the maven plugin dependency on the servlet api.
This seems to be the same as JENKINS-16920. Jesse Glick discusses some possible solutions in his comment there.
Hi François,
The actual exception is:
Caused by: java.lang.UnsupportedClassVersionError: Bad version number in .class file
And it is happening when Jenkins is trying to load HttpServlet.
Caused by: java.lang.ClassFormatError: Failed to load javax.servlet.http.HttpServlet
"Bad version number in .class file" indicates that the application tries to execute class compiled in newer version of JDK.
In your case, java 1.5 tries to load classes compiled with 1.6
Tomcat 6 minimum version is 1.5, you were running it with 1.5, and it was fine.
Tomcat 7 minimum version is 1.6, you are running it with 1.5, and it does not work.
http://tomcat.apache.org/whichversion.html
Andrey