2013-04-07 11 views
7

Utilizzo Windows 7, Java 1.7, Grails 2.1.4, Groovy 2.0.4 e Tomcat 7.0.37.
Quando si esegue il mio progetto, ottengo l'errore sotto:Come evitare l'errore "javax.servlet-api-3.0.1.jar - jar non caricato"?

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) 

Ho provato diverse versioni di servlet-api e bcprov-ext-jdk15- * .jar, ma che non ha aiutato.

Dovrei essere preoccupato per questo errore?
Come posso farlo scomparire?

risposta

7

Il vaso servlet-api non deve essere affatto nel proprio WEB-INF/lib, come viene fornito dal contenitore. Il messaggio di avviso è abbastanza esplicito: la specifica servlet richiede i contenitori per ignorare tutti i file jar in una webapp che contiene classi javax.servlet. Puoi tranquillamente ignorare quel messaggio.

Anche il secondo messaggio su bouncycastle non è probabilmente quello che sembra. Probabilmente c'è stato un altro errore che ha causato il mancato avvio della webapp, e questo messaggio appare quando qualcos'altro tenta di caricare una classe dalla webapp già chiusa. Controlla gli altri tuoi file di registro ed eventualmente modifica le impostazioni di log4j in Config.groovy per rendere più dettagliato il log e vedere se questo mostra l'errore reale sottostante.

12

È sufficiente utilizzare un campo di applicazione previsto per il vostro dipendenza come la seguente:

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

Così non confezionato nel file WAR/EAR più.