如何避免错误“javax.servlet-api-3.0.1.jar - jar not loaded”?

时间:2013-04-07 05:02:35

标签: maven grails maven-2 tomcat7 maven-3

我使用的是Windows 7,Java 1.7,Grails 2.1.4,Groovy 2.0.4和Tomcat 7.0.37。
执行我的项目时,我收到以下错误:

Apr 5, 2013 11:08:00 AM org.apache.catalina.loader.WebappClassLoader validateJarFile
    INFO: validateJarFile(/software/apache-tomcat-7.0.37/webapps/aaaportal-0.1/WEB-INF/lib/javax.servlet-api-3.0.1.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
    Apr 5, 2013 11:08:13 AM org.apache.catalina.loader.WebappClassLoader loadClass
    INFO: Illegal access: this web application instance has been stopped already.  Could not load org.bouncycastle.jce.provider.JDKKeyPairGenerator$RSABeanInfo.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
    java.lang.IllegalStateException
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1599)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1558)
        at java.beans.Introspector.instantiate(Introspector.java:1444)
        at java.beans.Introspector.findExplicitBeanInfo(Introspector.java:428)
        at java.beans.Introspector.<init>(Introspector.java:377)
        at java.beans.Introspector.getBeanInfo(Introspector.java:164)
        at groovy.lang.MetaClassImpl$15.run(MetaClassImpl.java:2948)

我尝试了不同版本的servlet-api和bcprov-ext-jdk15- * .jar,但这没有帮助。

我应该担心这个错误吗?
我怎么能让它消失?

2 个答案:

答案 0 :(得分:12)

您只需使用提供的范围作为您的依赖关系,如下所示:

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

因此它不再打包在您的WAR / EAR文件中。

答案 1 :(得分:8)

servlet-api jar根本不应该在你的WEB-INF / lib中,因为它是由容器提供的。警告消息非常明确 - servlet规范要求容器忽略包含javax.servlet类的webapp中的任何jar文件。您可以放心地忽略该消息。

关于bouncycastle的第二条消息也可能不是它看起来的样子。可能还有另一个错误导致webapp无法正常启动,并且当其他东西试图从已经关闭的webapp加载类时会出现此消息。检查您的其他日志文件,并可能在Config.groovy中编辑log4j设置,以使日志记录更加详细,并查看是否显示真正的基础错误。