【问题标题】:Problems starting JSF [duplicate]启动 JSF 的问题 [重复]
【发布时间】:2012-11-21 11:49:31
【问题描述】:

我正在尝试创建一个基本的 JSF 应用程序,但似乎无法使其工作 - 我怀疑缺少某些东西,默认情况下在 faces-config.xml 文件中,但我不确定是什么。我收到此错误:

java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config

我用谷歌搜索了它,发现它是一个据称丢失的 jar 文件。我下载并添加到项目的“构建路径”中,刷新并重新启动服务器,但它仍然无法正常工作。外部 JAR 文件称为“jstl-1.2.jar”。

以下是报告的错误列表:

HTTP Status 500 - javax/servlet/jsp/jstl/core/Config

type Exception report

message javax/servlet/jsp/jstl/core/Config

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:606)


root cause 

java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config
com.sun.faces.application.view.JspViewHandlingStrategy.executePageToBuildView(JspViewHandlingStrategy.java:345)
com.sun.faces.application.view.JspViewHandlingStrategy.buildView(JspViewHandlingStrategy.java:154)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)


root cause 

java.lang.ClassNotFoundException: javax.servlet.jsp.jstl.core.Config
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
com.sun.faces.application.view.JspViewHandlingStrategy.executePageToBuildView(JspViewHandlingStrategy.java:345)
com.sun.faces.application.view.JspViewHandlingStrategy.buildView(JspViewHandlingStrategy.java:154)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)


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

有什么想法吗?这必须是一个简单的修复,因为从 JSF 应用程序中弹出一个简单的 HelloWorld 不会这么复杂。

干杯

【问题讨论】:

  • 你能贴出你的类路径中有哪些库(.jar)
  • Apache Tomcat v7.0.类路径中有以下内容:jstl-1.2.jar、Apache Tomcat v7.0、EAR 库、JRE System Library[jre7] 和 Web App Libraries
  • 首先,我建议您使用一些已经包含 JSF 实现的服务器,例如 JBoss 或 Glassfish。
  • @SJuan76 这不是一个好建议,您可以编写一个 JSF 2 应用程序并将其部署在 Tomcat 7 上没有问题。
  • 看起来你没有在你的类路径中设置 JSTL 库(或者没有很好地配置)。确保您在 WEB-INF/lib 目录中有这个(和其他)jar,并且它们在生成的战争中可用。

标签: jsf


【解决方案1】:

我下载了这个并添加到项目的“构建路径”中,刷新并重新启动了服务器,但它仍然不起作用。

这不是正确的方法。您根本不应该触摸项目的 Build Path 属性。您应该直接将 JSTL JAR 文件拖放到项目的 /WEB-INF/lib 文件夹中。您应该确保撤消您在 Build Path 属性中所做的每一项更改,以粗心地尝试“修复”此问题,否则 web 应用程序仍将使用损坏的类路径/库结构。

为什么需要它是因为 JSF2 Facelets 需要 JSTL 依赖项才能运行所有 <c:xxx> tags as listed here。但是,您使用的是 Tomcat,它是一个准系统 JSP/Servlet 容器,它没有随 JSTL 一起提供。您必须单独下载并安装它。在像 Glassfish 这样成熟的容器上,您不需要这样做(顺便说一下,对于 JSF JAR 文件也不需要)。

另见:

【讨论】:

  • 是的,大约半小时前,我正在查看您关于此的其他帖子 - 将尝试一下
  • 一个问题,当我设置一个新的动态 Web 项目并进入 JSF 功能窗口时,我应该选择什么?我有两个选项,必须选择一个:JSF 2.1(Mojarra 2.1.6-FCS) 或 JSTL - 我上面提到的库。使用哪个?
  • 您也可以选择自己提供库。然后,您只需将必要的 JSF 和 JSTL JAR 放入 /WEB-INF/lib 自己。
  • 感谢 BalcusC - 在使用 Eclipse 之后,我找到了我想要的东西。我首先尝试将 jar 放入 lib 文件夹中,但我做不到 - 所以我创建了一个新项目并选择了“禁用库配置”。然后我被允许将文件放入 lib 文件夹中。当我有“*/faces/helloWorld.jsp”时,它在 Tomcat 服务器上工作。我想这就是你上面的意思?
【解决方案2】:

将 jar 文件移动到 WEB-INF 文件夹并没有解决问题,所以经过一番搜索后,我发现了这个 tutorial。按照它的步骤后它也不起作用所以我必须做的是:

  1. 从上面的网站下载 zip 文件夹
  2. 把它解压到你方便的地方 - 对我来说就是桌面
  3. 检查 lib 文件夹并将其中的 jar 文件放入另一个文件夹中
  4. 按照正常步骤创建项目 -> 文件 -> 新建 -> 动态 Web 项目
  5. 输入您的项目详细信息
  6. 当您进入“JSF 功能”页面时,单击“管理库”图标,选择“新建”并创建一个文件夹,随意调用它。将之前的 jar 文件添加到此,然后选择完成。

您现在应该可以开始了!

感谢您的帮助

P.S 这是 JAR 文件的列表,它们同样位于 zip 的 WEB-INF/lib 文件夹中

  • commons-beanutils-1.7.0.jar
  • commons-chain-1.1.jar
  • commons-collections.jar
  • commons-digester-1.8.jar
  • commons-logging-1.0.4.jar
  • jsf-api.jar
  • jsf-impl.jar
  • jstl.jar

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-21
    • 2018-05-08
    • 2012-05-18
    • 2019-04-30
    • 2012-08-25
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多