5

尝试加载 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)

触发错误的代码行是:

    SyndFeedOutput output = new SyndFeedOutput();  

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

我想知道问题是否可能与我正在使用 jdom-2.0.4.jar 的事实有关,而这可能是较旧的语法:

    SyndFeedOutput output = new SyndFeedOutput();  

此错误消息的其他帖子均来自旧版本的 jdom。也许有一些新的语法可以在新版本的 jdom 中调用 SyndFeedOutput() 的等价物?

谁能帮我解决这个错误信息?

编辑:

为了解决 Nocmear 的建议,我已确认以下 9 个 jar 文件是我的应用程序的构建路径中包含的唯一与 jdom 或 rome 相关的 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  
xercesImpl.jar  
xml-apis.jar  

第二次编辑:


正如 rolfl 所建议的,我下载了 jdom-1.1.3 并将其添加到我在 Eclipse 中的应用程序的构建路径中。

当我在网络浏览器中加载 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)

现在包含在我的构建路径中的相关 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  

此外,我尝试按照 Nocmear 的建议将这些 jars 添加到 tomcat 中的 bin 文件中,但这只是在 eclipse 中触发了错误消息,所以我将它们放回 eclipse 应用程序中。

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

4

3 回答 3

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 站点的首页:向下阅读到项目状态

罗尔夫

于 2013-02-17T13:34:22.410 回答
3

M8、rome-1.0 依赖于 jdom-1.0。

所以你可能想改变使用 jdom-1.0.jar 而不是 jdom-2.0.x ro jdom-1.1.3。

于 2013-04-23T04:36:16.200 回答
1

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

于 2013-02-17T05:53:31.020 回答