2016-01-21 4 views
0

Я пытаюсь перейти от Tomcat 7 к Tomcat 8. Я использую maven как инструмент сборки. От Tomcat 8 Maven Plugin for Java 8 Я вижу, что можно использовать Tomcat7-maven-plugin с Tomcat8. Тем не менее, здесь речь идет о жалобах Джаспера на недопустимую версию JSP, когда она не должна на самом деле.JSP 2.3 с Tomcat 8

pom.xml

<dependency> 
    <groupId>javax.faces</groupId> 
    <artifactId>jsf-api</artifactId> 
    <version>2.1</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>javax.servlet-api</artifactId> 
    <version>3.1.0</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>javax.servlet.jsp</groupId> 
    <artifactId>javax.servlet.jsp-api</artifactId> 
    <version>2.3.1</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>javax.el</groupId> 
    <artifactId>javax.el-api</artifactId> 
    <version>3.0.0</version> 
    <scope>provided</scope> 
</dependency> 
... 
... 

<plugin> 
    <groupId>org.apache.tomcat.maven</groupId> 
    <artifactId>tomcat7-maven-plugin</artifactId> 
    <version>2.2</version> 
</plugin> 

Ошибки я получаю

Jan 22, 2016 2:54:55 AM org.apache.jasper.compiler.TldLocationsCache tldScanJar 
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 
Jan 22, 2016 2:54:55 AM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [jsp] in context with path [/push] threw exception [/index.jsp (line: 7, column: 66) Invalid version number: "2.3", must be "1.2", "2.0", "2.1" or "2.2"] with root cause 
org.apache.jasper.JasperException: /index.jsp (line: 7, column: 66) Invalid version number: "2.3", must be "1.2", "2.0", "2.1" or "2.2" 
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42) 


    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:443) 
    at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:149) 
    at org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:526) 
    at org.apache.jasper.compiler.Node$JspRoot.accept(Node.java:564) 
    at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2375) 
    at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2427) 
    at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2433) 
    at org.apache.jasper.compiler.Node$Root.accept(Node.java:474) 
    at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2375) 
    at org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1798) 
    at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:217) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:373) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:353) 
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340) 
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

С Tomcat 8 uses Jasper 2 для реализации JSF 2.3 и из приведенного ниже кода Jasper 2: -

public void visit(Node.JspRoot n) throws JasperException { 
    JspUtil.checkAttributes(TagConstants.ROOT_ACTION, n, jspRootAttrs, err); 
    String version = n.getTextAttribute("version"); 
    if (!version.equals("1.2") && !version.equals("2.0") && 
      !version.equals("2.1") && !version.equals("2.2") && 
      !version.equals("2.3")) { 
     err.jspError(n, MESSAGES.invalidJspVersionNumber(version)); 
    } 
    visitBody(n); 
} 

Я подозреваю, что версия Джаспера не может быть правильной, на которую ссылаются c используя ошибку, но у меня нет способа оценить это. Любые ссылки оцениваются!

ответ

1

Это проблема с tomcat7-maven-plugin, которая поддерживает только Tomcat 7 на данный момент. Существуют рекомендации по настройке версии встроенного tomcat по адресу http://tomcat.apache.org/maven-plugin-trunk/tomcat7-maven-plugin/adjust-embedded-tomcat-version.html. Тем не менее, это вызывает проблему, как описано в разделе: https://issues.apache.org/jira/browse/MTOMCAT-234

На момент написания настоящего документа оно все еще остается нерешенным. Я рассматриваю возможность переноса всего моего проекта на Gradle навсегда, учитывая, что плагин gradle-tomcat поддерживает Tomcat 8.

Смежные вопросы