我正在尝试构建一个JSF应用程序,但是我遇到了这个错误:
java.lang.ClassNotFoundException: javax.servlet.descriptor.JspConfigDescriptor
java.lang.NoClassDefFoundError: javax/servlet/descriptor/JspConfigDescriptor
这是如何引起的?如何解决?
答案 0 :(得分:1)
java.lang.ClassNotFoundException:javax.servlet.descriptor.JspConfigDescriptor
这个类在Servlet 3.0中是introduced。因此,此错误意味着您的webapp的运行时类路径中充斥着来自完全不同的servletcontainer make / version的任意下载的JAR文件,该文件不支持Servlet 3.0,而webapp又被部署到Servlet 3.0兼容容器。这只会导致所有颜色的类加载冲突,因为运行时类路径中存在多个不同的版本化类。
与servletcontainer特定的JAR文件一起乱丢/WEB-INF/lib
文件夹反过来是一个常见的启动程序错误,它试图“修复”他们在IDE中遇到的编译错误。这应该以不同的方式解决。另请参阅How do I import the javax.servlet API in my Eclipse project?
简而言之:永远不要在/WEB-INF/lib
中随意下载特定于servlet容器的JAR。而是配置IDE项目以将所需的目标servletcontainer设置为“Target Runtime”。