启动JSF时出现问题

时间:2012-11-21 11:49:32

标签: jsf

我试图创建一个基本的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并不复杂。

干杯

2 个答案:

答案 0 :(得分:2)

  

我下载并添加到项目的“构建路径”中,刷新并重新启动服务器,但它仍然无效。

这不是正确的做法。您根本不应该触摸项目的 Build Path 属性。您应该将JSTL JAR文件直接放入项目的/WEB-INF/lib文件夹中。您应该确保撤消您在构建路径属性中所做的每一项更改都在不小心尝试“修复”此操作,否则仍然会构建/部署webapp破坏的类路径/库结构。

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

另见:

答案 1 :(得分:0)

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

  1. 从上面的网站下载zip文件夹
  2. 将它提取到适合您的任何地方 - 对我来说就是桌面
  3. 检查lib文件夹并将jar文件放入另一个文件夹
  4. 按照创建项目的常规步骤进行操作 - &gt;档案 - &gt;新 - &gt;动态Web项目
  5. 输入您的项目详情
  6. 当您进入“JSF功能”页面时,单击“管理库”图标,选择“新建”并创建一个文件夹,随意调用它。将之前的jar文件添加到此处并选择完成。
  7. 你现在应该好好去!

    感谢您的帮助

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

    • 公地BeanUtils的-1.7.0.jar
    • 公地链1.1.jar
    • 公地collections.jar
    • 公地消化器-1.8.jar
    • 共享记录-1.0.4.jar
    • JS​​F-api.jar文件
    • JS​​F-impl.jar中
    • 的jstl.jar