28

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

1

4 Answers 4

47

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> 
Sign up to request clarification or add additional context in comments.

9 Comments

What if I am not using maven (Eclipse + terminal launched Tomcat) ?
If you aren't using maven, then you must have packaged the servlet-api jar inside the WEB-INF/lib folder of the war. Check the lib folder to verify and remove it if it is present there.
That helped, thanks but I have found out that while importing my project from SVN I can see that Apache CXF being in the dependencies of my project has a geronimo-servlet_3.0_spec-1.0.jar dependency and it is being packaged to the lib/ directory of my .war. Any ideas how to remove it from there ?
I can't properly recall if I was getting this warning when I was working on cxf but are you getting the jar not loaded warning for this particular 'geronimo-servlet_3.0_spec-1.0.jar' as well in the tomcat logs? If yes, you always have the option to unpack the cxf jar and remove the servlet_spec jar from it and then re-pack it.
|
2

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' } 

Comments

1

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.

Comments

-2

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.