0

我正在尝试构建一个 JSF 应用程序,但我遇到了这个错误:

java.lang.ClassNotFoundException: javax.servlet.descriptor.JspConfigDescriptor
java.lang.NoClassDefFoundError: javax/servlet/descriptor/JspConfigDescriptor

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

4

1 回答 1

1

java.lang.ClassNotFoundException: javax.servlet.descriptor.JspConfigDescriptor

这个类是在 Servlet 3.0中引入的。因此,此错误意味着您的 webapp 的运行时类路径中充斥着从不支持 Servlet 3.0 的完全不同的 servletcontainer make/version 任意下载的 JAR 文件,而 webapp 又被部署到与 Servlet 3.0 兼容的容器中。这只会导致所有颜色的类加载冲突,因为运行时类路径中存在多个不同版本的类。

使用特定于 servletcontainer 的 JAR 文件乱扔/WEB-INF/lib文件夹反过来又是初学者在疯狂尝试“修复”他们在 IDE 中遇到的编译错误时的常见错误。这应该以不同的方式解决。另请参阅如何在我的 Eclipse 项目中导入 javax.servlet API?

简而言之:永远不要将任意下载的特定于 servletcontainer 的 JAR 放入/WEB-INF/lib. 相反,配置您的 IDE 项目以将所需的目标 servletcontainer 设置为“目标运行时”。

于 2013-09-03T11:34:51.663 回答