2015-09-15 2 views
2

У меня есть приложение webapp, которое работает на встроенном Jetty-7.6.8 (jdk-6), но из-за ошибки Diffe-Hellman в браузере мы решили перейти на более новую версию из Причала. Итак, мы перешли на Jetty-9.3.3. Поскольку Jetty-9.x нуждается в jdk-8, я также обновил jdk. Прямо сейчас причал запускается без ошибок, но когда я пытаюсь получить доступ к моей странице входа, я получаю ошибку компиляции jsp.JSP ошибка компиляции на причале-9.3.3

Эти зависимости:

-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

+0

Как вы управляющий ваши зависимости? Этот список кажется неправильным. Если вы использовали инструмент построения (maven, gradle, grails, buildr, groovy grape, sbt или leiningen), у вас были бы разные результаты. –

+0

У меня есть 'manifest.mf', в котором упоминаются все эти зависимости. Я делаю банку своего встроенного класса причала и других классов вместе с этим манифестом. – devd

+0

все упомянутые инструменты сборки могут также управлять ссылками manifest.mf (используя обычные ссылки java или ссылки osgi или даже ссылки на Java Jigsaw/module) на основе ваших определенных транзитивных графиков зависимостей. –

ответ

1

Проект Jetty Project представляет собой пример проекта для использования JSP во встроенной пристани.

См: github.com/jetty-project/embedded-jetty-jsp

Что вам нужно исправить:

  • Используйте инструмент для сборки! (Это самый важный аспект этого ответа, только это решило бы 3/4 ваших вопросов)
  • Зафиксируйте ваши зависимости

Пример:

[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 окружающей среды должным образом.

    Обратите внимание: Настройка

    • Instance Менеджер
    • Temp/Царапины Dir
    • ContainerIncludeJarPattern
    • Контейнер Инициализаторы
    • JettyJasperInitializer
    • несистемной требование ClassLoader
    • Настройка JasperServ пусть
    • Setup из DefaultServlet
+0

Спасибо, но я использовал этот webapp в jetty-7.6.8 без поддержки maven. На самом деле, я понятия не имею, как использовать maven. – devd

+0

Я пробовал с простой страницей jsp, там тоже компиляция терпит неудачу. Taglibs Я не использую. – devd

+0

У вас есть много вариантов, maven - всего лишь один из них. (см. список вариантов в комментариях ниже вашего вопроса) –

1

я застрял с той же ошибкой в ​​течение некоторого времени. Таким образом, для тех, кто сталкивается с одной и той же ошибкой, ответ - именно то, что указывали другие, - управление зависимостями.

Если вы видите Caused by: java.lang.NullPointerException at org.apache.jasper.compiler.Validator$ValidateVisitor.<init>(Validator.java:515), это вызвано неспособностью обнаружить/загрузить taglibs движком Apache Jasper.

Другими словами, у вас отсутствует зависимость taglib или ее API или ее реализация где-то.

Убедитесь, что все следующая зависимость/баночки в вашем POM

<dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-jsp</artifactId> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.mortbay.jasper</groupId> 
     <artifactId>apache-el</artifactId> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.mortbay.jasper</groupId> 
     <artifactId>apache-jsp</artifactId> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.mortbay.jasper</groupId> 
     <artifactId>jasper-jsp</artifactId> 
     <type>pom</type> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.taglibs</groupId> 
     <artifactId>taglibs-standard-impl</artifactId> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.taglibs</groupId> 
     <artifactId>taglibs-standard-spec</artifactId> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>apache-jsp</artifactId> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>apache-jstl</artifactId> 
     <scope>compile</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.eclipse.jetty</groupId> 
     <artifactId>jetty-annotations</artifactId> 
     <scope>compile</scope> 
    </dependency> 

И если вы затенение WAR в банку FAT, ты в мир иной боли, если зависимостей в разных областях (компиляция и время выполнения), тогда порядок зависимости зависит, иначе вы начнете получать то же самое NullPointerException.

1

Проблема была решена после того, как я добавил все эти зависимости:

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 

PS: Я переехал в 9.3.8 от 9.3.3

+1

Я нахожу add jetty-lib/jsp replace jetty-lib/apache-jsp, он работает. – wawa

2

Я столкнулся с такой же проблемой при обновлении с Jetty 8.1 до 9.4. В моем случае речь шла не о недостающих зависимостях, а о слишком многих или противоречивых. Проблема ушла после того, как я удалил следующие артефакты из: путь к классам

  • org.mortbay.jasper.apache-Jsp
  • org.mortbay.jasper.apache-эль
Смежные вопросы