Community
Participate
Working Groups
Attempted to deploy a web application using JSTL on Jetty Hightide 7.1.2. Received the following error message when attempting to access the index page of the application. HTTP ERROR 500 Problem accessing /. Reason: javax/servlet/jsp/jstl/core/ConditionalTagSupport Caused by: java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/ConditionalTagSupport at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:620) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) at java.net.URLClassLoader.access$100(URLClassLoader.java:56) at java.net.URLClassLoader$1.run(URLClassLoader.java:195) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 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.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) at java.net.URLClassLoader.access$100(URLClassLoader.java:56) at java.net.URLClassLoader$1.run(URLClassLoader.java:195) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:347) at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:300) at org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1411) at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1665) at org.apache.jasper.compiler.Parser.parseBody(Parser.java:1896) at org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:1155) at org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1466) at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1665) at org.apache.jasper.compiler.Parser.parse(Parser.java:181) at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:239) at org.apache.jasper.compiler.ParserController.parse(ParserController.java:156) at org.apache.jasper.compiler.Parser.processIncludeDirective(Parser.java:390) at org.apache.jasper.compiler.Parser.parseIncludeDirective(Parser.java:427) at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:570) at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1642) at org.apache.jasper.compiler.Parser.parse(Parser.java:181) at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:239) at org.apache.jasper.compiler.ParserController.parse(ParserController.java:140) at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:199) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:435) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:608) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:360) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:527) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:423) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:493) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:924) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:358) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:860) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:346) at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:115) at org.eclipse.jetty.servlet.DefaultServlet.doGet(DefaultServlet.java:516) at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:527) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:423) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:493) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:924) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:358) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:183) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:860) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:214) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:113) at org.eclipse.jetty.server.Server.handle(Server.java:335) at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:588) at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:1029) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:549) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:211) at org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:418) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:489) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:436) at java.lang.Thread.run(Thread.java:595)
Comparison of JAR files loaded by Jetty 7.0.0 that this application is currently running on vs Jetty 7.1.2 yields the following results. Jetty 7.0.0: 19: 1.6.5 | ${jetty.home}/lib/jsp/ant-1.6.5.jar 20: 3.1.1 | ${jetty.home}/lib/jsp/core-3.1.1.jar 21: 7.0.0.v20091005 | ${jetty.home}/lib/jsp/jetty-jsp-2.1-7.0.0.v20091005.jar 22: 9.1.1.B6025p2 | ${jetty.home}/lib/jsp/jsp-2.1-glassfish-9.1.1.B60.25.p2.jar 23: 2.1 | ${jetty.home}/lib/jsp/jsp-api-2.1-glassfish-9.1.1.B60.25.p2.jar 32: 1.1 | ${jetty.home}/lib/jndi/activation-1.1.jar 33: 1.4 | ${jetty.home}/lib/jndi/mail-1.4.jar Jetty 7.1.2 19: 1.0.0.v201004190952 | ${jetty.home}/lib/jsp/com.sun.el_1.0.0.v201004190952.jar 20: 3.6.0.I20100429-1549 | ${jetty.home}/lib/jsp/ecj-3.6M7.jar 21: 2.1.0.v201004190952 | ${jetty.home}/lib/jsp/javax.el_2.1.0.v201004190952.jar 22: 2.1.0.v201004190952 | ${jetty.home}/lib/jsp/javax.servlet.jsp_2.1.0.v201004190952.jar 23: 7.1.2.v20100523 | ${jetty.home}/lib/jsp/jetty-jsp-2.1-7.1.2.v20100523.jar 24: 2.1.0.v201004190952 | ${jetty.home}/lib/jsp/org.apache.jasper.glassfish_2.1.0.v201004190952.jar 25: 1.2.0.v201004190952 | ${jetty.home}/lib/jsp/org.apache.taglibs.standard.glassfish_1.2.0.v201004190952.jar 34: 1.1.0.v200906290531 | ${jetty.home}/lib/jndi/javax.activation_1.1.0.v200906290531.jar 35: 1.4.1.v200808130215 | ${jetty.home}/lib/jndi/javax.mail.glassfish_1.4.1.v200808130215.jar
Checking the JAR files in ${jetty.home}/lib/jsp finds the missing class file in one of the GlassFish JAR files that is found in Jetty 7.0.0. $ for JAR in *.jar; do echo $JAR; jar -tvf $JAR | grep ConditionalTagSupport; done ant-1.6.5.jar core-3.1.1.jar jetty-jsp-2.1-7.0.0.v20091005.jar jsp-2.1-glassfish-9.1.1.B60.25.p2.jar jsp-api-2.1-glassfish-9.1.1.B60.25.p2.jar 1696 Thu Aug 27 17:49:54 CDT 2009 javax/servlet/jsp/jstl/core/ConditionalTagSupport.class
Looks like the jstl api jar got left out of the jetty-distribution pom.xml for the build. Can you add appropriate entries for javax.servlet.jsp.jstl_1.2.0.v201004190952.jar from the orbit repo? In the meanwhile, the work around would be for users to download either the above jar from orbit, or http://download.java.net/maven/glassfish/javax/servlet/jsp/jstl/jstl-api/1.2/jstl-api-1.2.jar and put it into $JETTY_HOME/lib/jsp. thanks, Jan
Committed r1866.