Jar文件无法在tomcat webapps中加载

时间:2014-02-22 06:51:04

标签: java jar tomcat7 maven-3

这是我尝试将maven项目部署到tomcat时出现的错误 mvn tomcat7:deploy 错误:   INFO:validateJarFile(D:\ Softwares \ tomcat \ apache-tomcat-7.0.50 \ webapps \ myWebApp_ 1 \ WEB-INF \ lib \ javax.servlet-api-3.0.1.jar) - jar未加载。请参阅Servlet规范3。 0,第10.7.2节。违规类:javax / servlet / Servlet.class

但是WEB-INF \ lib中有javax.servlet-api-3.0.1.jar 感谢

4 个答案:

答案 0 :(得分:46)

  

INFO:validateJarFile(D:\ Softwares \ tomcat \ apache-tomcat-7.0.50 \ webapps \ myWebApp_ 1 \ WEB-INF \ lib \ javax.servlet-api-3.0.1.jar) - jar未加载< / p>

Servlet3.0已经在其lib文件夹中附带了tomcat,默认情况下,tomcat将始终加载存在于其中的servlet jar。这就是为什么你得到tomcat没有在你的项目中加载jar的警告。

简单解决方案:如果您使用的是maven,请将其范围设置为pom.xml中的provided,并且maven不会将其放在项目的WEB-INF / lib中。像

这样的东西
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>3.0</version>
    <scope>provided</scope>
</dependency>

答案 1 :(得分:2)

赛义夫的精确解释。

我使用gradle作为构建工具。我可以排除tomcat-servi-api.jar,它默认由tomcat提供。

您需要知道哪个依赖项正在将warcat-servlet-api.jar传递给war,然后使用以下内容将其排除

 compile ('your dependency goes here') {
        exclude module:'tomcat-servlet-api'
    }

答案 2 :(得分:1)

这只是日志中出现的警告,而不是错误。如果忽略此项,您的项目仍会部署。

您可以通过使用maven重建.war并将其复制到\ webapps \中删除旧文件来摆脱此错误。

答案 3 :(得分:-2)

最佳解决方案:从lib中删除该jar(即javax.servlet-api-3.0.1.jar)