我试图创建一个基本的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并不复杂。
干杯
答案 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。按照它的步骤后,它也不起作用,所以我必须做的是:
你现在应该好好去!
感谢您的帮助
P.S这是JAR文件列表,它们又位于zip的WEB-INF / lib文件夹中