我正在尝试构建一个 JSF 应用程序,但我遇到了这个错误:
java.lang.ClassNotFoundException: javax.servlet.descriptor.JspConfigDescriptor
java.lang.NoClassDefFoundError: javax/servlet/descriptor/JspConfigDescriptor
这是如何引起的,我该如何解决?
我正在尝试构建一个 JSF 应用程序,但我遇到了这个错误:
java.lang.ClassNotFoundException: javax.servlet.descriptor.JspConfigDescriptor
java.lang.NoClassDefFoundError: javax/servlet/descriptor/JspConfigDescriptor
这是如何引起的,我该如何解决?
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 设置为“目标运行时”。