Originally noted under
JENKINS-13659, though that is a rather different issue.
My diagnosis: Result used by the Jenkins Maven runner amends Stapler.CONVERT_UTILS in a static block, Stapler makes reference to HttpServlet, and Tomcat 7 apparently ships a copy of the Servlet API built for Java 6+. So we get a linkage error, even though the Maven runner has no business loading Servlet-related classes to begin with.
Simplest fix would be to do the registration not in a static block but using @Initializer. This is assuming the registration is used only in the master JVM, not on slaves.
Better fix would be to make the CONVERT_UTILS registration declarative so that Stapler discovers such conversions if and when it needs them. Useful to do anyway for performance reasons.
Best fix would be to refactor the Maven embedder to use only the most limited dependencies on the Maven JVM side, certainly not anything from Jenkins core; at most Remoting and a few custom classes built in their own module. This would allow us to upgrade Jenkins main sources to Java 6 (or greater) dependencies without affecting Maven builds.