java.lang.ClassNotFoundException:org.jdom.JDOMException

Cod*_*Med 5 java rss rome jdom

我在尝试加载rss页面时收到以下错误消息:

Feb 16, 2013 9:08:44 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [news-feed] in context with path [/publisher] threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: org.jdom.JDOMException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
    at com.sun.syndication.io.SyndFeedOutput.<init>(SyndFeedOutput.java:44)
Run Code Online (Sandbox Code Playgroud)

触发错误的代码行是:

    SyndFeedOutput output = new SyndFeedOutput();  
Run Code Online (Sandbox Code Playgroud)

我已经搜索了此错误消息,并阅读了有关它的几个帖子,包括在此网站上发布的内容.这些帖子表明将jdom.jar添加到构建路径将导致错误消失.但是,我已经将与jdom-2.0.4.jar捆绑在一起的所有8个jar文件添加到我在eclipse中的buildpath中,但每次尝试加载rss页面时,错误消息仍然存在.

我想知道问题是否可能与我使用jdom-2.0.4.jar以及可能是旧语法的事实有关:

    SyndFeedOutput output = new SyndFeedOutput();  
Run Code Online (Sandbox Code Playgroud)

此错误消息的其他帖子都来自旧版本的jdom.也许在新版本的jdom中调用等效的SyndFeedOutput()有一些新的语法?

任何人都可以帮助我通过此错误消息?

编辑:

为了解决Nocmear的建议,我已经确认以下9个jar文件是与jdom或rome相关的唯一jar文件,它们包含在我的应用程序的buildpath中:

jaxen-1.1.4.jar  
jdom-2.0.4.jar  
jdom-2.0.4-contrib.jar  
jdom-2.0.4-javadoc.jar  
jdom-2.0.4-junit.jar  
jdom-2.0.4-sources.jar  
rome-1.0.jar  
xercesImpl.jar  
xml-apis.jar  
Run Code Online (Sandbox Code Playgroud)

第二次编辑:


我下载了jdom-1.1.3并将它添加到我的应用程序的eclipse中的buildpath中,正如rolfl建议的那样.

当我在我的网络浏览器中加载rss页面时,tomcat给了我以下错误日志:

java.lang.NoClassDefFoundError: org/jdom/JDOMException
    com.sun.syndication.io.SyndFeedOutput.<init>(SyndFeedOutput.java:44)
    publisher.web.NewsFeedServlet.doGet(NewsFeedServlet.java:68)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

java.lang.ClassNotFoundException: org.jdom.JDOMException
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
    com.sun.syndication.io.SyndFeedOutput.<init>(SyndFeedOutput.java:44)
    publisher.web.NewsFeedServlet.doGet(NewsFeedServlet.java:68)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
Run Code Online (Sandbox Code Playgroud)

现在包含在我的构建路径中的相关jar文件是:

ant.jar  
jaxen.jar  
jaxen 1.1.4.jar  
jdom-2.0.4.jar  
jdom-2.0.4-contrib.jar  
jdom-2.0.4-javadoc.jar  
jdom-2.0.4-junit.jar  
jdom-2.0.4-sources.jar  
rome-1.0.jar  
xalan.jar  
xerces.jar  
xercesImpl.jar  
xml-apis.jar  
Run Code Online (Sandbox Code Playgroud)

另外,我尝试将这些jar添加到tomcat中的bin文件中,而不是按照Nocmear的建议,但是这只是在eclipse中触发了错误消息,所以我把它们放回到eclipse appication中.

也许我不理解人们的建议.或者也许有人可能有其他建议.任何帮助表示赞赏.

rol*_*lfl 5

您有类路径的JDOM 2.x版本,但代码正在寻找版本1.x.

下载JDOM 1.1.3并将其与JDOM 2.x的一个(最新版本)一起放在类路径中.JDOM 1.x中的所有包都是org.jdom.*...而JDOM 2.x中的所有包都是org.jdom2.*

请参阅此注释:JDOM2迁移

和JDOM站点的首页:读到项目状态

罗尔夫


小智 1

请检查 jar 的版本。您可以导入两个 jar,一旧一新,然后删除旧的,或下载最新的 jar。