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  

2番目の編集:


rolflが提案したように、jdom-1.1.3をダウンロードして、eclipseのアプリケーションのビルドパスに追加しました。

Webブラウザに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の提案に従って、代わりにtomcatのbinファイルにこれらのjarファイルを追加しようとしましたが、それがEclipseでエラーメッセージをトリガーしただけなので、Eclipseアプリケーションに戻しました。

おそらく私は人々が何を示唆しているのか理解していません。あるいは、誰かが他の提案をしているかもしれません。どんな助けでも大歓迎です。

4

3 に答える 3

5

クラスパスにJDOM2.xバージョンがありますが、コードはバージョン1.xを探しています。

JDOM 1.1.3をダウンロードし、それを1つの(最新の)バージョンのJDOM2.xと一緒にクラスパスに入れます。JDOM1.xのすべてのパッケージはorg.jdom。*です...そしてJDOM2.xのすべてのパッケージはorg.jdom2。*です。

このメモを参照してください:JDOM2の移行

およびJDOMサイトのフロントページ:プロジェクトステータスまでお読みください

ロルフ

于 2013-02-17T13:34:22.410 に答える
3

M8、rome-1.0 は jdom-1.0 に依存します。

そのため、jdom-2.0.x から jdom-1.1.3 の代わりに jdom-1.0.jar を使用するように変更することをお勧めします。

于 2013-04-23T04:36:16.200 に答える
1

jar のバージョンを確認してください。古いものと新しいものの 2 つの jar をインポートしてから、古いものを削除するか、最新の jar をダウンロードします。

于 2013-02-17T05:53:31.020 に答える