2014-10-31 125 views
3

我正在使用tomcat 7並且剛剛升級到tomcat 8.但是當我在tomcat服務器上運行我的web應用程序時。它給出了這個錯誤。Tomcat 8給JSP編譯錯誤

Stacktrace:] with root cause 
org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: [42] in the generated java file: [/home/jamil/LunaWorkspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/work/Catalina/localhost/svc/org/apache/jsp/index_jsp.java] 
The method getDispatcherType() is undefined for the type HttpServletRequest 

    Stacktrace: 
     at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:103) 
     at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:199) 
     at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:450) 
     at org.apache.jasper.compiler.Compiler.compile(Compiler.java:361) 
     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:564) 
     at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357) 
     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:725) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
     at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537) 
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081) 
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658) 
     at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222) 
     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566) 
     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
     at java.lang.Thread.run(Thread.java:745) 

我的pom.xml文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>svc</groupId> 
    <artifactId>svc</artifactId> 
    <packaging>war</packaging> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>svc Maven Webapp</name> 
    <url>http://maven.apache.org</url> 

     <dependency> 
      <groupId>com.github.ptgoetz</groupId> 
      <artifactId>storm-signals</artifactId> 
      <version>0.2.0</version> 
     </dependency> 


     <dependency> 
      <groupId>org.apache.storm</groupId> 
      <artifactId>storm-core</artifactId> 
      <version>0.9.1-incubating</version> 
     </dependency> 


     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.8.2</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>commons-configuration</groupId> 
      <artifactId>commons-configuration</artifactId> 
      <version>1.6</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.hadoop</groupId> 
      <artifactId>hadoop-client</artifactId> 
      <version>2.2.0</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.hbase</groupId> 
      <artifactId>hbase-client</artifactId> 
      <version>0.98.4-hadoop2</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.zookeeper</groupId> 
      <artifactId>zookeeper</artifactId> 
      <version>3.4.6</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>javax.servlet-api</artifactId> 
      <version>3.0.1</version> 
     </dependency> 

     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.32</version> 
     </dependency> 

     <dependency> 
      <groupId>com.googlecode.json-simple</groupId> 
      <artifactId>json-simple</artifactId> 
      <version>1.1.1</version> 
     </dependency> 

     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.16</version> 
     </dependency> 

     <dependency> 
      <groupId>org.json</groupId> 
      <artifactId>json</artifactId> 
      <version>20090211</version> 
     </dependency> 

     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-server</artifactId> 
      <version>1.18.1</version> 
     </dependency> 



     <dependency> 
      <groupId>com.sun.jersey</groupId> 
      <artifactId>jersey-client</artifactId> 
      <version>1.18.1</version> 
     </dependency> 

     <dependency> 
      <groupId>com.sun.jersey.contribs</groupId> 
      <artifactId>jersey-multipart</artifactId> 
      <version>1.18.1</version> 
     </dependency> 

     <dependency> 
      <groupId>com.google.code.gson</groupId> 
      <artifactId>gson</artifactId> 
      <version>2.2.4</version> 
     </dependency> 

     <dependency> 
      <groupId>redis.clients</groupId> 
      <artifactId>jedis</artifactId> 
      <version>2.0.0</version> 
     </dependency> 

     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-api</artifactId> 
      <version>7.0</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.json</groupId> 
      <artifactId>javax.json-api</artifactId> 
      <version>1.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.glassfish</groupId> 
      <artifactId>javax.json</artifactId> 
      <version>1.0</version> 
      <scope>runtime</scope> 
     </dependency> 


    </dependencies> 

    <build> 
     <finalName>svc</finalName> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.0.2</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

請告訴我這個錯誤的原因,什麼可以是可能的解決方案。

回答

4

getDispatcherType僅在Servlet規範3.0及更高版本中可用。 compojure具有相關性的層次結構,看起來像

storm-core 0.9.1 
    compojure 1.1.3 
    ring-core 1.1.5 
     servlet-api 2.5 

即使罐子的最新版本的對舊的servlet jar文件的依賴,所以你需要找到一個替代品,排除compojure依賴標籤本身或刪除內違規依賴完全依賴。

+0

我在servlet 3.0中的pom.xml和web.xml也調整爲3.0 – Mr37037 2014-10-31 20:32:31

+0

我會說檢查你的Web容器的類路徑,看看你是否使用舊的3.0前罐子 – Reimeus 2014-10-31 20:34:25

+0

我該如何檢查那好嗎? – Mr37037 2014-10-31 20:38:31