Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jetty-9.3.3上的JSP编译错误_Java_Jsp_Jetty_Embedded Jetty_Jetty 9 - Fatal编程技术网

Java jetty-9.3.3上的JSP编译错误

Java jetty-9.3.3上的JSP编译错误,java,jsp,jetty,embedded-jetty,jetty-9,Java,Jsp,Jetty,Embedded Jetty,Jetty 9,我有一个运行在嵌入式Jetty-7.6.8(jdk-6)上的webapp应用程序,但由于浏览器上的Differ Hellman错误,我们决定迁移到Jetty的新版本。所以,我们搬到了码头-9.3.3。由于Jetty-9.x需要jdk-8,我也升级了jdk。现在jetty启动时没有任何错误,但是当我尝试访问登录页面时,我得到一个无法编译的jsp错误 这些是依赖项: -org.eclipse.jetty.apache-jsp-9.3.3.v20150827.jar -org.mortbay.jasp

我有一个运行在嵌入式Jetty-7.6.8(jdk-6)上的webapp应用程序,但由于浏览器上的Differ Hellman错误,我们决定迁移到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
 jetty-lib/apache-jsp/org.eclipse.jetty.apache-jsp-9.3.8.v20160314.jar
 jetty-lib/apache-jsp/org.mortbay.jasper.apache-jsp-8.0.27.jar
 jetty-lib/apache-jsp/org.eclipse.jdt.core.compiler.ecj-4.4.2.jar
 jetty-lib/apache-jsp/org.mortbay.jasper.apache-el-8.0.27.jar
 jetty-lib/jetty-annotations-9.3.8.v20160314.jar jetty-lib/jetty-continuation-9.3.8.v20160314.jar
 jetty-lib/jetty-http-9.3.8.v20160314.jar jetty-lib/jetty-io-9.3.8.v20160314.jar
 jetty-lib/jetty-plus-9.3.8.v20160314.jar jetty-lib/jetty-security-9.3.8.v20160314.jar
 jetty-lib/jetty-server-9.3.8.v20160314.jar jetty-lib/jetty-servlet-9.3.8.v20160314.jar
 jetty-lib/jetty-util-9.3.8.v20160314.jar jetty-lib/jetty-webapp-9.3.8.v20160314.jar
 jetty-lib/jetty-xml-9.3.8.v20160314.jar  jetty-lib/servlet-api-3.1.jar
 jetty-lib/setuid/jetty-setuid-java-1.0.3.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
HTTP错误500
访问/xdadm/test.jsp时出现问题。原因:
服务器错误
原因:
org.apache.jasper.jaspereException:无法为JSP编译类
位于org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:600)
位于org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:363)
位于org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
位于org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
位于org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:816)
位于org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1686)
在com.xcom.filter.RequestHandler.doFilter(RequestHandler.java:91)
位于org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
位于org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581)
位于org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
位于org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
位于org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
位于org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1156)
位于org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511)
位于org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
位于org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1088)
位于org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
位于org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213)
位于org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119)
位于org.eclipse.jetty.server.server.handle(server.java:517)
位于org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:306)
位于org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242)
位于org.eclipse.jetty.io.AbstractConnection$ReadCallback.successed(AbstractConnection.java:245)
位于org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95)
位于org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:192)
位于org.eclipse.jetty.io.AbstractConnection$ReadCallback.successed(AbstractConnection.java:245)
在org.eclipse.jetty.io.fill利息.fillable(fill利息.java:95)
位于org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75)
位于org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213)
位于org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147)
位于org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654)
位于org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572)
运行(Thread.java:745)
原因:java.lang.NullPointerException
位于org.apache.jasper.compiler.Validator$ValidateVisitor.(Validator.java:515)
位于org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1853)
位于org.apache.jasper.compiler.compiler.generateJava(compiler.java:217)
位于org.apache.jasper.compiler.compiler.compile(compiler.java:356)
位于org.apache.jasper.compiler.compiler.compile(compiler.java:336)
位于org.apache.jasper.compiler.compiler.compile(compiler.java:323)
位于org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:585)
... 33多
请告诉我出了什么问题的线索或建议。
TIA

Jetty项目维护了一个示例项目,用于在嵌入式Jetty中使用JSP

见:

您需要解决的问题:

  • 使用构建工具!(这是这个答案中最重要的方面,仅此一点就可以解决你四分之三的问题)
  • 修复您的依赖关系
例如:

[embedded-jetty-jsp]$ mvn dependency:tree
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building embedded-jetty-jsp 1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ embedded-jetty-jsp ---
[INFO] org.eclipse.jetty.demo:embedded-jetty-jsp:jar:1-SNAPSHOT
[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:compile
[INFO] +- org.eclipse.jetty:jetty-annotations:jar:9.3.3.v20150827:compile
[INFO] |  +- org.eclipse.jetty:jetty-plus:jar:9.3.3.v20150827:compile
[INFO] |  |  \- org.eclipse.jetty:jetty-jndi:jar:9.3.3.v20150827:compile
[INFO] |  +- javax.annotation:javax.annotation-api:jar:1.2:compile
[INFO] |  +- org.ow2.asm:asm:jar:5.0.1:compile
[INFO] |  \- org.ow2.asm:asm-commons:jar:5.0.1:compile
[INFO] |     \- org.ow2.asm:asm-tree:jar:5.0.1:compile
[INFO] +- org.eclipse.jetty:jetty-webapp:jar:9.3.3.v20150827:compile
[INFO] |  +- org.eclipse.jetty:jetty-xml:jar:9.3.3.v20150827:compile
[INFO] |  \- org.eclipse.jetty:jetty-servlet:jar:9.3.3.v20150827:compile
[INFO] |     \- org.eclipse.jetty:jetty-security:jar:9.3.3.v20150827:compile
[INFO] +- org.eclipse.jetty:apache-jsp:jar:9.3.3.v20150827:compile
[INFO] |  +- org.eclipse.jetty:jetty-util:jar:9.3.3.v20150827:compile
[INFO] |  +- org.eclipse.jetty:jetty-server:jar:9.3.3.v20150827:compile
[INFO] |  |  +- org.eclipse.jetty:jetty-http:jar:9.3.3.v20150827:compile
[INFO] |  |  \- org.eclipse.jetty:jetty-io:jar:9.3.3.v20150827:compile
[INFO] |  +- org.eclipse.jetty.toolchain:jetty-schemas:jar:3.1.M0:compile
[INFO] |  +- org.mortbay.jasper:apache-jsp:jar:8.0.23.M1:compile
[INFO] |  |  \- org.mortbay.jasper:apache-el:jar:8.0.23.M1:compile
[INFO] |  \- org.eclipse.jetty.orbit:org.eclipse.jdt.core:jar:3.8.2.v20130121:compile
[INFO] \- org.eclipse.jetty:apache-jstl:pom:9.3.3.v20150827:compile
[INFO]    +- org.apache.taglibs:taglibs-standard-spec:jar:1.2.1:compile
[INFO]    \- org.apache.taglibs:taglibs-standard-impl:jar:1.2.1:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.884 s
[INFO] Finished at: 2015-09-15T05:37:53-07:00
[INFO] Final Memory: 13M/481M
[INFO] ------------------------------------------------------------------------
  • 正确设置JSP环境

    注意:

    • 实例管理器设置
    • 临时/临时目录
    • ContainerCludeJarPattern
    • 容器初始值设定项
    • 防波堤初始化器
    • 非系统类加载器需求
    • JasperServlet的设置
    • DefaultServlet的设置

    • 我已经被同样的错误困扰了一段时间。因此,对于任何遇到相同错误的人来说,答案正是其他人指出的——依赖关系管理

      如果您看到由以下原因引起的
      :java.lang.NullPointerException
      在org.apache.jasper.compiler.Validator$ValidateVisitor.(Validator.java:515)
      上,它是由apache jasper引擎检测/加载标记库失败引起的

      换句话说,您缺少taglibs依赖项、它的API或它的实现

      确保POM中包含以下所有依赖项/JAR

      
      org.eclipse.jetty
      码头
      编译
      org.mortbay.jasper
      阿帕奇
      编译
      org.mortbay.jasper
      apache jsp
      编译
      org.mortbay.jasper
      贾斯珀jsp
      聚甲醛
      org.apache.taglibs
      taglibs标准impl
      编译
      org.apache.taglibs
      taglibs标准规范
      编译
      org.eclipse.jetty
      apache jsp
      编译
      org.eclipse.jetty
      ApacheJSTL
      编译
      org.eclipse.jetty
      码头注释
      编译
      
      如果你把这场战争变成了一场肥沃的战争
       jetty-lib/apache-jsp/org.eclipse.jetty.apache-jsp-9.3.8.v20160314.jar
       jetty-lib/apache-jsp/org.mortbay.jasper.apache-jsp-8.0.27.jar
       jetty-lib/apache-jsp/org.eclipse.jdt.core.compiler.ecj-4.4.2.jar
       jetty-lib/apache-jsp/org.mortbay.jasper.apache-el-8.0.27.jar
       jetty-lib/jetty-annotations-9.3.8.v20160314.jar jetty-lib/jetty-continuation-9.3.8.v20160314.jar
       jetty-lib/jetty-http-9.3.8.v20160314.jar jetty-lib/jetty-io-9.3.8.v20160314.jar
       jetty-lib/jetty-plus-9.3.8.v20160314.jar jetty-lib/jetty-security-9.3.8.v20160314.jar
       jetty-lib/jetty-server-9.3.8.v20160314.jar jetty-lib/jetty-servlet-9.3.8.v20160314.jar
       jetty-lib/jetty-util-9.3.8.v20160314.jar jetty-lib/jetty-webapp-9.3.8.v20160314.jar
       jetty-lib/jetty-xml-9.3.8.v20160314.jar  jetty-lib/servlet-api-3.1.jar
       jetty-lib/setuid/jetty-setuid-java-1.0.3.jar
      
      jetty-lib/
      ├── apache-jsp
      │   |── org.eclipse.jdt.core.compiler.ecj-4.4.2.jar
      │   ├── org.eclipse.jetty.apache-jsp-9.3.8.v20160314.jar
      │   ├── org.mortbay.jasper.apache-el-8.0.27.jar
      │   └── org.mortbay.jasper.apache-jsp-8.0.27.jar
      ├── jetty-annotations-9.3.8.v20160314.jar
      ├── jetty-continuation-9.3.8.v20160314.jar
      ├── jetty-http-9.3.8.v20160314.jar
      ├── jetty-io-9.3.8.v20160314.jar
      ├── jetty-plus-9.3.8.v20160314.jar
      ├── jetty-security-9.3.8.v20160314.jar
      ├── jetty-server-9.3.8.v20160314.jar
      ├── jetty-servlet-9.3.8.v20160314.jar
      ├── jetty-util-9.3.8.v20160314.jar
      ├── jetty-webapp-9.3.8.v20160314.jar
      ├── jetty-xml-9.3.8.v20160314.jar
      ├── servlet-api-3.1.jar
      └── setuid
          ├── 32libsetuid-linux.so
          ├── jetty-setuid-java-1.0.3.jar
          └── libsetuid-linux.so
      
      // This webapp will use jsps and jstl. We need to enable the
      // AnnotationConfiguration in order to correctly
      // set up the jsp container
      Configuration.ClassList classlist = Configuration.ClassList
                  .setServerDefault( server );
      classlist.addBefore(
                  "org.eclipse.jetty.webapp.JettyWebXmlConfiguration",
                  "org.eclipse.jetty.annotations.AnnotationConfiguration" );