我有一个运行在嵌入式Jetty-7.6.8(jdk-6)上的Web应用程序,但由于浏览器上的Diffie-Hellman错误,我们决定迁移到Jetty的更新版本。因此,我们迁移到了Jetty-9.3.3。由于Jetty-9.x需要jdk-8,我也升级了jdk。现在,Jetty启动时没有错误,但当我尝试访问登录页面时,我得到了无法编译jsp的错误。
以下是相关性:
-org.eclipse.jetty.apache-jsp-9.3.3.v20150827.jar
-org.mortbay.jasper.apache-el-8.0.23.M1.jar
-org.mortbay.jasper.apache-jsp-8.0.23.M1.jar
-org.eclipse.jetty.orbit.org.eclipse.jdt.core-3.8.2.v20130121.jar
-jetty-continuation-9.3.3.v20150827.jar
-jetty-http-9.3.3.v20150827.jar
-jetty-io-9.3.3.v20150827.jar
-jetty-security-9.3.3.v20150827.jar
-jetty-server-9.3.3.v20150827.jar
-jetty-servlet-9.3.3.v20150827.jar
-jetty-util-9.3.3.v20150827.jar
-jetty-webapp-9.3.3.v20150827.jar
-jetty-xml-9.3.3.v20150827.jar
-servlet-api-3.1.jar
日志/浏览器上出现的错误:
HTTP ERROR 500
Problem accessing /xdadm/test.jsp. Reason:
Server Error
Caused by:
org.apache.jasper.JasperException: Unable to compile class for JSP
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:600)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:363)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:816)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1686)
at com.xcom.filter.RequestHandler.doFilter(RequestHandler.java:91)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1156)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1088)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)
at org.eclipse.jetty.server.Server.handle(Server.java:517)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:306)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:245)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:192)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:245)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)
at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
at org.apache.jasper.compiler.Validator$ValidateVisitor.<init>(Validator.java:515)
at org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1853)
at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:217)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:356)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:336)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:323)
at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:585)
... 33 more
请,任何线索或建议,出了什么问题。TIA
5条答案
按热度按时间xjreopfe1#
我已经被同样的错误困了一段时间了。所以对于任何遇到同样错误的人来说,答案正是别人指出的-依赖管理。
如果您看到
Caused by: java.lang.NullPointerException at org.apache.jasper.compiler.Validator$ValidateVisitor.<init>(Validator.java:515)
,则是由于Apache碧玉引擎检测/加载标记库失败所致。换句话说,您在某处遗漏了标记库依赖项或其API或其实现。
确保POM中包含以下所有依赖项/JAR
如果您将WARMap到FAT jar中,那么如果依赖项的作用域不同(编译与运行时),您将面临另一个痛苦的世界,然后依赖项的顺序很重要,否则您将开始获得相同的
NullPointerException
。azpvetkf2#
我在从Jetty 8.1升级到9.4时遇到了完全相同的问题。在我的例子中,不是缺少依赖项,而是依赖项太多或相互冲突。在我从类路径中删除以下工件后,问题就消失了:
dphi5xsq3#
Jetty项目维护一个在嵌入式Jetty中使用JSP的示例项目。
请参阅:github.com/jetty-project/embedded-jetty-jsp
需要修复的问题:
示例:
注意:
kzmpq1sx4#
在我添加了所有这些依赖项之后,问题就解决了:
这怎么看起来像:
PS:我已从9.3.3升级到9.3.8
mwkjh3gx5#
我在使用Embedded Jetty Server 9.4.15和JSP支持时也遇到了同样的问题。https://www.eclipse.org/jetty/documentation/current/embedded-examples.html#embedded-webapp-jsp
您必须启用注解配置: