java.lang.NoClassDefFoundError: javax/faces/model/SelectItem
Posted
技术标签:
【中文标题】java.lang.NoClassDefFoundError: javax/faces/model/SelectItem【英文标题】: 【发布时间】:2012-05-28 05:44:01 【问题描述】:当我运行部署到 Jety Web 服务器的 Web 应用程序时,我得到以下异常跟踪。看来我缺少一些 jar 文件。谁能告诉我怎么了?
HTTP 错误 500
访问 /PMCounters/default.jsp 时出现问题。原因:
javax/faces/model/SelectItem
原因:
在 com.ericsson.dae.pm.dao.VirtualConfigTableDAO.(VirtualDaeConfigTableDAO.java:41) 在 org.apache.jsp.default_jsp._jspService(org.apache.jsp.default_jsp:162) 在 org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:109) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389) 在 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:486) 在 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:380) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 在 org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:547) 在 org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:481) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119) 在 org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520) 在 org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227) 在 org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:940) 在 org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:409) 在 org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186) 在 org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:874) 在 org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117) 在 org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149) 在 org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110) 在 org.eclipse.jetty.server.Server.handle(Server.java:349) 在 org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:441) 在 org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:904) 在 org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:565) 在 org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:217) 在 org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:46) 在 org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:545) 在 org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:43) 在 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598) 在 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533) 在 java.lang.Thread.run(Thread.java:662)
这是我的 WEB.XML:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config.xml</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
【问题讨论】:
您的 .jsp 映射是否正确? 你把jsf的jar文件放到lib目录了吗? 是的,所有 jsf jar 文件都已到位,它们是:com-sun-commons-beanutils.jar com-sun-commons-collections.jar com-sun-commons-digester.jar jsf-api。 jar jsf-impl.jar 我已经在上面添加了我的 web.xml。 【参考方案1】:通常该错误是当该类有多个版本可用时,请确保您的应用程序中没有该类的多个版本的 jar,或者应用程序服务器没有为您提供一个版本和您的 webapp正在打包另一个版本。
【讨论】:
我在下面列出了应用程序的 WEB-INF/lib 目录和 /opt/opennms/jetty-webapps/lib/ext/jsf 下的 jar 文件。我删除了 WEB-INF/lib 下的那些,但它仍然不起作用。您还有其他建议吗?谢谢。 com-sun-commons-beanutils.jar、com-sun-commons-collections.jar、com-sun-commons-digester.jar、jsf-api.jar、jsf-impl.jar。 也许您每次都解压战争文件并取回这些文件? 我已经确保我没有一次又一次地拥有那些 jar 文件,但仍然有问题。任何帮助将不胜感激。 我从各处删除了所有这些 jar 文件。还是有问题。 我在 jetty.log 中有以下内容:2012-05-22 14:23:04,994 WARN [qtp522201969-376] ServletHandler: /PMCounters/default.jsp java.lang.NoClassDefFoundError: javax/ faces/model/SelectItem at com.ericsson.dae.pm.dao.VirtualDaeConfigTableDAO.以上是关于java.lang.NoClassDefFoundError: javax/faces/model/SelectItem的主要内容,如果未能解决你的问题,请参考以下文章