2013-04-07 13 views
7

Używam Windows 7, Java 1.7, Grails 2.1.4, Groovy 2.0.4 i Tomcat 7.0.37.
Podczas wykonywania mojego projektu, pojawia się błąd poniżej:Jak uniknąć błędu "javax.servlet-api-3.0.1.jar - jar nie załadowany"?

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) 

Próbowałem różnych wersji servlet-API i bcprov-EXT-jdk15- * .jar, ale to nie pomogło.

powinienem się martwić o tym błędzie?
Jak mogę sprawić, że zniknie?

Odpowiedz

7

servlet-api słoik nie powinno być w WEB-INF/lib w ogóle, jak to jest przewidziane przez kontener. Komunikat ostrzegawczy jest dość jednoznaczne - spec serwletu wymaga pojemników ignorować żadnych plików słój webapp, które zawierają javax.servlet klas. Możesz bezpiecznie zignorować tę wiadomość.

Drugi komunikat o BouncyCastle prawdopodobnie nie to, co wydaje się również. Prawdopodobnie wystąpił kolejny błąd, który spowodował, że aplikacja nie uruchomiła się poprawnie, a ten komunikat pojawia się, gdy coś innego próbuje załadować klasę z już działającej aplikacji. Sprawdź inne pliki dziennika i ewentualnie edytuj ustawienia log4j w Config.groovy, aby rejestrowanie było bardziej szczegółowe i sprawdź, czy pokazuje prawdziwy błąd podstawowy.

12

po prostu trzeba użyć dostarczonego zakres do uzależnienia jak następuje:

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

więc nie będzie pakowany w pliku WAR/EAR więcej.