Primefaces p:feedReader noclassdeffound异常

Primefaces p:feedReader noclassdeffound异常,primefaces,rome,Primefaces,Rome,我试图在JSFWeb项目(Eclipse)中创建一个简单的RSS阅读器 以下是RSS的Primefaces片段: <h:panelGrid> <br/> <h:outputText styleClass="font1" value="Travel feeds:"/> <hr/> <p:feedReader value="http://www.faroo.com/api?q=travel&amp;l=en&amp

我试图在JSFWeb项目(Eclipse)中创建一个简单的RSS阅读器

以下是RSS的Primefaces片段:

    <h:panelGrid>
    <br/>
<h:outputText styleClass="font1" value="Travel feeds:"/>
<hr/>
<p:feedReader value="http://www.faroo.com/api?q=travel&amp;l=en&amp;src=news&amp;f=rss" var="feed">
    <a href="#{feed.link}" class="link">#{feed.title}</a>
    <h:outputText value="#{feed.description.value}" escape="false"/>
    <p:separator />
</p:feedReader>
</h:panelGrid>
我使用“配置生成路径”包含的库如下所示:

primefaces-6.2-sources.jar,primefaces-6.2.jar,rome-1.0.jar

还试图将它们直接复制到WEB-INF/libfolder,这也没有帮助

那么实际的问题是什么呢

我有这样的例外:

    exception 
javax.servlet.ServletException: com/rometools/rome/io/XmlReader
    javax.faces.webapp.FacesServlet.service(Unknown Source)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)



root cause 
java.lang.NoClassDefFoundError: com/rometools/rome/io/XmlReader
    org.primefaces.component.feedreader.FeedReaderRenderer.encodeEnd(FeedReaderRenderer.java:35)
    javax.faces.component.UIComponentBase.encodeEnd(Unknown Source)
    com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(Unknown Source)
    com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(Unknown Source)
    com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(Unknown Source)
    javax.faces.component.UIComponentBase.encodeChildren(Unknown Source)
    javax.faces.component.UIComponent.encodeAll(Unknown Source)
    javax.faces.component.UIComponent.encodeAll(Unknown Source)
    javax.faces.component.UIComponent.encodeAll(Unknown Source)
    com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(Unknown Source)
    com.sun.faces.application.view.MultiViewHandler.renderView(Unknown Source)
    com.sun.faces.lifecycle.RenderResponsePhase.execute(Unknown Source)
    com.sun.faces.lifecycle.Phase.doPhase(Unknown Source)
    com.sun.faces.lifecycle.LifecycleImpl.render(Unknown Source)
    javax.faces.webapp.FacesServlet.service(Unknown Source)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)



root cause 
java.lang.ClassNotFoundException: com.rometools.rome.io.XmlReader
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1856)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1705)
    org.primefaces.component.feedreader.FeedReaderRenderer.encodeEnd(FeedReaderRenderer.java:35)
    javax.faces.component.UIComponentBase.encodeEnd(Unknown Source)
    com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(Unknown Source)
    com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(Unknown Source)
    com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(Unknown Source)
    javax.faces.component.UIComponentBase.encodeChildren(Unknown Source)
    javax.faces.component.UIComponent.encodeAll(Unknown Source)
    javax.faces.component.UIComponent.encodeAll(Unknown Source)
    javax.faces.component.UIComponent.encodeAll(Unknown Source)
    com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(Unknown Source)
    com.sun.faces.application.view.MultiViewHandler.renderView(Unknown Source)
    com.sun.faces.lifecycle.RenderResponsePhase.execute(Unknown Source)
    com.sun.faces.lifecycle.Phase.doPhase(Unknown Source)
    com.sun.faces.lifecycle.LifecycleImpl.render(Unknown Source)
    javax.faces.webapp.FacesServlet.service(Unknown Source)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)



note The full stack trace of the root cause is available in the Apache Tomcat/7.0.67 logs.

真的找不到解决办法。我错过了什么?我没有包含所需的.jar文件,或者是以错误的方式包含了它们?

将Primefaces降级到5.3版本(从6.*)并包含jdom-1.1.1.jar库似乎解决了这个问题。Primefaces RSS阅读器正在工作。不能确定是版本问题,还是jdom依赖,或者两者兼而有之。只是希望这至少能给那些提出同样问题的人一个线索


谢谢你们的帮助,伙计们

PrimeFaces发行列表中提到的PrimeFaces 6.2问题的解决方案

在PrimeFaces文档中:

  • 罗马1.5.0可选FeedReader
在迁移信息中:


你需要一个更新版本的罗马,1.5.0而不是1.0

rome jar实际上没有部署在运行时吗?@Kukeltje抱歉,我是JSF新手,请您详细说明一下?如何查看它是否已部署?来自WEB-INF/lib的jar文件是否已部署与jsf无关。。。纯java web开发好的,我会努力解决这个问题。非常感谢您的时间和指导。可能是重复的,所以您没有在文件夹日志中查找提到的“屏幕错误”,您没有尝试在PF 6.2的jdom中使用相同的配置吗?好的,所以我将其恢复为PF 6.2,它将不起作用。肯定有些版本问题!在SO中,接受好的答案是很好的做法。如果他们真的很有帮助的话,我也会投票是的,我通常都是这样做的,但今天早上我真的很忙:)现在就完成了,谢谢你们的参与和努力工作来解决这个问题@库克尔特杰
    exception 
javax.servlet.ServletException: com/rometools/rome/io/XmlReader
    javax.faces.webapp.FacesServlet.service(Unknown Source)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)



root cause 
java.lang.NoClassDefFoundError: com/rometools/rome/io/XmlReader
    org.primefaces.component.feedreader.FeedReaderRenderer.encodeEnd(FeedReaderRenderer.java:35)
    javax.faces.component.UIComponentBase.encodeEnd(Unknown Source)
    com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(Unknown Source)
    com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(Unknown Source)
    com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(Unknown Source)
    javax.faces.component.UIComponentBase.encodeChildren(Unknown Source)
    javax.faces.component.UIComponent.encodeAll(Unknown Source)
    javax.faces.component.UIComponent.encodeAll(Unknown Source)
    javax.faces.component.UIComponent.encodeAll(Unknown Source)
    com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(Unknown Source)
    com.sun.faces.application.view.MultiViewHandler.renderView(Unknown Source)
    com.sun.faces.lifecycle.RenderResponsePhase.execute(Unknown Source)
    com.sun.faces.lifecycle.Phase.doPhase(Unknown Source)
    com.sun.faces.lifecycle.LifecycleImpl.render(Unknown Source)
    javax.faces.webapp.FacesServlet.service(Unknown Source)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)



root cause 
java.lang.ClassNotFoundException: com.rometools.rome.io.XmlReader
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1856)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1705)
    org.primefaces.component.feedreader.FeedReaderRenderer.encodeEnd(FeedReaderRenderer.java:35)
    javax.faces.component.UIComponentBase.encodeEnd(Unknown Source)
    com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(Unknown Source)
    com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(Unknown Source)
    com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(Unknown Source)
    javax.faces.component.UIComponentBase.encodeChildren(Unknown Source)
    javax.faces.component.UIComponent.encodeAll(Unknown Source)
    javax.faces.component.UIComponent.encodeAll(Unknown Source)
    javax.faces.component.UIComponent.encodeAll(Unknown Source)
    com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(Unknown Source)
    com.sun.faces.application.view.MultiViewHandler.renderView(Unknown Source)
    com.sun.faces.lifecycle.RenderResponsePhase.execute(Unknown Source)
    com.sun.faces.lifecycle.Phase.doPhase(Unknown Source)
    com.sun.faces.lifecycle.LifecycleImpl.render(Unknown Source)
    javax.faces.webapp.FacesServlet.service(Unknown Source)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)



note The full stack trace of the root cause is available in the Apache Tomcat/7.0.67 logs.