2013-02-27 7 views
36

Wenn ich meine Anwendung nach der Eingabe der URL ausgeführt habe, kommt diese Ausnahme. Ich verwende Eclipse und Tomcat7.0.35. Ich habe auch Jstl.jar und jstl1.2.jarjava.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config

Mein Code ist

java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 
    at org.apache.myfaces.view.jsp.JspViewDeclarationLanguage.buildView(JspViewDeclarationLanguage.java:91) 
    at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:78) 
    at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241) 
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:199) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
+0

Können Sie die Liste der Bibliotheken in Ihrem Klassenpfad angeben? scheint dir die 'jstl' zu fehlen.jar' in Ihrem Klassenpfad – araknoid

+0

Ich habe jsf-myfaces, jstl, primefaces-Bibliotheken sowohl im Klassenpfad als auch im Buildpfad hinzugefügt – Sagar

+0

@Sagar Sie müssen sicherstellen, dass sich die JARs im Verzeichnis 'WEB-INF/lib' befinden. Siehe meine Antwort. – dan

Antwort

2

Wahrscheinlich die jstl Bibliotheken von Classpath fehlen/nicht zugänglich Kater.

Sie müssen mindestens die folgenden JAR-Dateien in Ihrem WEB-INF/lib Verzeichnis hinzuzufügen:

  • JSF-impl.jar
  • JSF-api.jar
  • jstl.jar
+2

... und ** nicht ** Giddle mit Projekt * Build Path * -Einstellung. Tippen Sie auf Untouch und machen Sie, falls nötig, Änderungen rückgängig. Das Löschen der JAR-Datei in '/ WEB-INF/lib' ist ausreichend. Siehe auch http://StackOverflow.com/Tags/JSTL/info Beachten Sie, dass JSTL 1.2 nur eine JAR-Datei ist, nicht zwei. Wenn Sie also "jstl.jar" und "jstl-1.2.jar" haben, sollten Sie die erste entfernen. – BalusC

+0

@BalusC Guter Punkt. Danke BalusC. – dan

+0

@BalusC Vielen Dank – Sagar

3

Fügen Sie jstl Jar zu Ihrem Anwendungsclasspath hinzu.

6

Standardmäßig enthält der Tomcat-Container keine jstl-Bibliothek. Um es zu beheben, erklärt in Ihrer Maven pom.xml Datei jstl.jar, wenn Sie in Maven-Projekt arbeiten oder fügen Sie es Classpath Ihre Anwendung

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>jstl</artifactId> 
    <version>1.2</version> 
    </dependency> 
+2

funktioniert nicht für mich ( – gstackoverflow

60

Der Fehler wird Ihnen sagen, es kann nicht die Klasse finden, weil es nicht ist verfügbar in Ihrer Anwendung.

Wenn Sie Maven verwenden, stellen Sie sicher, dass Sie die Abhängigkeit für jstl Artefakt haben:

<dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>1.2</version> 
</dependency> 

Wenn Sie es nicht verwenden, nur sicherstellen, dass Sie die JAR in Ihrem Classpath enthalten. Siehe this answer für Download-Links.

+0

@ RaulGogo-Ich benutze nicht Maven – Sagar

+0

Der letzte Absatz ist für den Fall, in dem Sie Maven nicht haben. Siehe die Antwort in der bereitgestellten Verbindung. –

1

Nur ein kurzer Kommentar: manchmal Maven kopiert nicht die jstl-.jar an die WEB-INF-Ordner, selbst wenn die pom.xml den Eintrag dafür hat.

Ich musste das JSTL Jar nach/WEB-INF/lib auf dem Dateisystem manuell kopieren. Das hat das Problem gelöst. Das Problem könnte mit Maven War Packaging Plugin zusammenhängen.

1

Fügen Sie JSTL library als Abhängigkeit zu Ihrem Projekt hinzu (javax.servlet.jsp.jstl.core.Config ist ein Teil dieses Pakets). Zum Beispiel, wenn Sie Gradle verwendet haben, könnten Sie in einem build.gradle schreiben:

dependencies { 
    compile 'javax.servlet:jstl:1.2' 
} 
1

Ich hatte das gleiche Problem. Gehe zu Projekteigenschaften -> Deployment-Assembly und füge jstl jar hinzu

Verwandte Themen