web-dev-qa-db-ja.com

java.lang.ClassNotFoundException:javax.servlet.jsp.jstl.core.Config

URLを入力した後にアプリケーションを実行すると、この例外が発生します。EclipseとTomcat7.0.35を使用しています。 Jstl.jarとjstl1.2.jarも追加しました

私のコードは

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)
43
Ssv

次のjarをダウンロードして、WEB-INF/libディレクトリに追加します。

51
Sudhakar

このエラーは、アプリケーションで使用できないためクラスが見つからないことを示しています。

Mavenを使用している場合は、jstlアーティファクトの依存関係があることを確認してください。

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

使用しない場合は、クラスパスにJARを含めるようにしてください。ダウンロードリンクについては、 この回答 を参照してください。

64
Raul Rene

デフォルトでは、Tomcatコンテナにはjstlライブラリが含まれていません。これを修正するには、Mavenプロジェクトで作業している場合、またはアプリケーションのクラスパスに追加する場合、Maven pom.xmlファイルでjstl.jarを宣言します

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

jstl jarをアプリケーションクラスパスに追加します。

3

たぶん、jstlライブラリーがクラスパスから欠落しているか、Tomcatからアクセスできません。

少なくとも次のjarファイルをWEB-INF/libディレクトリに追加する必要があります。

  • jsf-impl.jar
  • jsf-api.jar
  • jstl.jar
2
dan

プロジェクトへの依存関係として JSTLライブラリ を追加します(javax.servlet.jsp.jstl.core.Configはこのパッケージの一部です)。たとえば、 Gradle を使用している場合、build.gradleに記述できます。

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

簡単なコメント:pom.xmlにエントリがある場合でも、Mavenはjstl-.jarをWEB-INFフォルダーにコピーしないことがあります。

JSTL jarをファイルシステムの/ WEB-INF/libに手動でコピーする必要がありました。これで問題は解決しました。この問題は、Maven warパッケージングプラグインに関連している可能性があります。

1
George

同じ問題がありました。 [プロジェクトプロパティ]-> [デプロイメントアセンブリ]に移動し、jstl jarを追加します。

1
José Manuel