Rajashekhar Rangappa
Rajashekhar Rangappa

Reputation: 526

Jar file failed to load in tomcat webapps

This is what the error i got when i try to deploy maven project to tomcat

mvn tomcat7:deploy

Error :

INFO: validateJarFile(D:\Softwares\tomcat\apache-tomcat-7.0.50\webapps\myWebApp_
1\WEB-INF\lib\javax.servlet-api-3.0.1.jar) - jar not loaded. See Servlet Spec 3.
0, section 10.7.2. Offending class: javax/servlet/Servlet.class

But the javax.servlet-api-3.0.1.jar is there in WEB-INF\lib Thanks

Upvotes: 27

Views: 79808

Answers (4)

Tim
Tim

Reputation: 159

This is just an warning that appears in your log, not an error. Your project will still deploy if you ignore this.

You can get get rid of this error by rebuilding your .war using maven and copying it into \webapps\ removing your old files.

Upvotes: 1

Saif Asif
Saif Asif

Reputation: 5658

INFO: validateJarFile(D:\Softwares\tomcat\apache-tomcat-7.0.50\webapps\myWebApp_ 1\WEB-INF\lib\javax.servlet-api-3.0.1.jar) - jar not loaded

Servlet3.0 is already shipped with the tomcat inside its lib folder and by default tomcat will always load the servlet jar present there. Thats why you are getting the warning that tomcat is not loading your jar inside the project.

Simple solution : If you are using maven, set its scope as provided inside the pom.xml and maven will not place it in the WEB-INF/lib of your project. Something like

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>3.0</version>
    <scope>provided</scope>
</dependency>

Upvotes: 47

Surendra Verma
Surendra Verma

Reputation: 1

Best Solution : remove that jar(i.e javax.servlet-api-3.0.1.jar) from lib

Upvotes: -2

Sanjay Bharwani
Sanjay Bharwani

Reputation: 4739

Precise explanation by Saif asif.

I was using gradle as the build tool. It worked for me to exclude the tomcat-servlet-api.jar which is by default provided by tomcat.

You need to know which of your dependency is transitively adding tomcat-servlet-api.jar to the war and then exclude it using following

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

Upvotes: 2

Related Questions