2017-03-18 86 views
0

我想在我使用eclipse的maven项目中使用'tomcat:run'命令来运行我的项目。在这里,我遇到了一些问题:maven项目中嵌入的tomcat错误

这是我的pom.xml的插件代码:

<plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>tomcat-maven-plugin</artifactId> 
      <version>1.1</version> 
      <configuration> 
       <source>${java.version}</source> 
       <target>${java.version}</target> 
       <port>9999</port> 
        <path>/webapp</path> 
        <warFile>${project.basedir}/target/${project.build.finalName}.war</warFile> 

      </configuration> 
     </plugin> 

这里是完整的错误堆栈跟踪

java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax/el/ExpressionFactory;" the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class, org/apache/jsp/index_jsp, and the class loader (instance of org/codehaus/plexus/classworlds/realm/ClassRealm) for the method's defining class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ExpressionFactory used in the signature 
at org.apache.jsp.index_jsp._jspInit(index_jsp.java:22) 
at org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52) 
at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:159) 
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329) 
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176) 
at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) 
at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) 
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
at java.lang.Thread.run(Thread.java:745) 

我怎样才能解决这个问题呢?

任何建议将理解

谢谢

+0

您有两种选择添加到您的项目库,例如jsp-api.jar,el-api.jar,servlet-api.jar等: 将这些库添加为Java Build Path中的外部jar; 添加它们作为行家依存关系,设定为每个所提供的范围,例如: javax.servlet.jsp 的jsp-API 2.1 提供

回答

0

您需要包括servlet的依赖关系@Ashwin说。

这样的:

<dependencies> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.0.1</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
    </dependency> 
</dependencies> 

我把这个例子从这个blog post配置。 servlet api和jstl的版本可能会根据tomcat版本而变化。