【问题标题】:Deploying a JSF webapp results in java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config [duplicate]部署 JSF webapp 会导致 java.lang.ClassNotFoundException:javax.servlet.jsp.jstl.core.Config [重复]
【发布时间】:2013-12-03 22:11:24
【问题描述】:

当我启动 JavaServer Faces 应用程序时出现错误。在浏览器上出现以下错误:

HTTP Status 500 - 

--------------------------------------------------------------------------------

type Exception report

message 

description The server encountered an internal error () that prevented it from fulfilling this request.

exception 

javax.servlet.ServletException: javax/servlet/jsp/jstl/core/Config
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:229)


root cause 

java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config
    org.apache.myfaces.view.jsp.JspViewDeclarationLanguage.buildView(JspViewDeclarationLanguage.java:91)
    org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:77)
    org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:199)


root cause 

java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    org.apache.myfaces.view.jsp.JspViewDeclarationLanguage.buildView(JspViewDeclarationLanguage.java:91)
    org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:77)
    org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:241)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:199)


note The full stack trace of the root cause is available in the Apache Tomcat/7.0.12 logs.

在我的 Eclipse IDE 中出现以下错误:

    Nov 19, 2013 8:37:17 PM org.apache.catalina.startup.Catalina start
Information: Server startup in 2518 ms
Nov 19, 2013 8:37:18 PM org.apache.catalina.core.StandardWrapperValve invoke
Schwerwiegend: Servlet.service() for servlet [Faces Servlet] in context with path [/de.xxx.jsf.first] threw exception [javax/servlet/jsp/jstl/core/Config] with root cause
java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at org.apache.myfaces.view.jsp.JspViewDeclarationLanguage.buildView(JspViewDeclarationLanguage.java:91)
    at org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:77)
    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:304)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

这是怎么引起的,我该如何解决?

【问题讨论】:

    标签: jsf tomcat7


    【解决方案1】:

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

    ClassNotFoundException 表示运行时类路径中缺少指定的类。正如包名所暗示的,它是JSTL 的一部分。

    JSF(更具体地说,Facelets)确实依赖于the <c:xxx> tags 的JSTL。当 JSF 加载时,它也隐式地加载 JSTL 核心 taglib 配置。但是,如果找不到,您将得到这个异常。

    JSTL(和 JSF!)通常已经在 J​​Boss AS/EAP/WildFly、GlassFish、TomEE、WebLogic 等 Java EE 容器上开箱即用。但是,您使用的是 Tomcat,它是一个准系统 JSP/Servlet 容器,不附带 JSTL。如果升级到例如TomEE 不是一个选项,您需要手动提供 JSTL 以及 webapp,就像您为 JSF 所做的那样。

    只需下载 jstl-1.2.jar 并将其与 JSF JAR 一起放入您的 web 应用程序的 /WEB-INF/lib 文件夹中。

    另见:

    【讨论】:

      【解决方案2】:

      您似乎缺少 lib。 检查是否在您的类路径中添加了 JSTL 1.1 - jstl.jar

      【讨论】:

        【解决方案3】:

        在 pom.xml 中添加 jstl maven 依赖:

                 <dependency>
                    <groupId>jstl</groupId>
                    <artifactId>jstl</artifactId>
                    <version>1.2</version>
                </dependency>
        

        【讨论】:

          猜你喜欢
          • 2016-02-28
          • 2013-02-13
          • 2014-09-11
          • 2014-04-26
          • 1970-01-01
          • 1970-01-01
          • 2011-06-17
          • 2012-10-05
          • 1970-01-01
          相关资源
          最近更新 更多