7

我正在使用 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,但这并没有帮助。

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

4

2 回答 2

12

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

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

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

于 2013-04-09T10:59:44.340 回答
8

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

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

于 2013-04-07T10:33:06.737 回答