51

当我在输入 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)
4

8 回答 8

71

该错误告诉您它找不到该类,因为它在您的应用程序中不可用。

如果您使用的是Maven,请确保您具有jstl工件的依赖项:

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

如果您不使用它,只需确保将 JAR 包含在类路径中即可。请参阅此答案以获取下载链接。

于 2013-02-27T13:50:38.683 回答
57

下载以下 jar 并将其添加到您的WEB-INF/lib目录中:

于 2013-02-27T14:00:35.790 回答
9

默认情况下,Tomcat 容器不包含任何 jstl 库。要修复它,如果您在 Maven 项目中工作,请在 Maven pom.xml 文件中声明 jstl.jar 或将其添加到应用程序的类路径中

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
  </dependency>
于 2013-02-27T13:49:47.920 回答
3

jstljar 添加到您的应用程序类路径。

于 2013-02-27T13:47:47.027 回答
2

您的类路径中可能缺少 jstl 库/tomcat 无法访问。

您需要在您的目录中至少添加以下 jar 文件WEB-INF/lib

  • jsf-impl.jar
  • jsf-api.jar
  • jstl.jar
于 2013-02-27T13:47:27.507 回答
1

只是一个简短的评论:有时 Maven 不会将 jstl-.jar 复制到 WEB-INF 文件夹,即使 pom.xml 有它的条目。

我不得不手动将 JSTL jar 复制到文件系统上的 /WEB-INF/lib 中。这解决了问题。该问题可能与 Maven 战争打包插件有关。

于 2014-02-17T19:56:51.290 回答
1

JSTL 库作为依赖项添加到您的项目(javax.servlet.jsp.jstl.core.Config是此包的一部分)。例如,如果您使用的是Gradle,您可以在 build.gradle 中编写:

dependencies {
    compile 'javax.servlet:jstl:1.2'
}
于 2015-03-11T12:43:01.340 回答
1

我有同样的问题。转到 Project Properties -> Deployment Assemplbly 并添加 jstl jar

于 2015-04-13T23:46:11.353 回答