3

私が取り組んでいるJavaプロジェクトがあり、数日前まで機能していました。Eclipse のセットアップに何をしたかはわかりませんが、Google Finance API にアクセスするコードを実行しようとすると、java.lang.ClassNotFoundException が発生します。Google Finance API を単独で使用する小さなテスト アプリケーションを作成しましたが、動作しているようです。したがって、これはプロジェクト固有の問題だと思います。どんな助けでも大歓迎です。スタック トレースは次のとおりです。

ptolemy.kernel.util.IllegalActionException:   in .RandomSearch.manager
Because:
com/google/common/collect/Maps
 at ptolemy.actor.Manager.execute(Manager.java:472)
 at ptolemy.actor.Manager.run(Manager.java:1119)
 at ptolemy.actor.Manager$3.run(Manager.java:1160)
Caused by: java.lang.NoClassDefFoundError: com/google/common/collect/Maps
 at com.google.gdata.wireformats.AltRegistry.<init>(AltRegistry.java:118)
 at com.google.gdata.wireformats.AltRegistry.<init>(AltRegistry.java:100)
 at com.google.gdata.client.Service.<clinit>(Service.java:546)
 at AtomicBroadcast.GoogleFinance.GooglePortfolioReader.fire(GooglePortfolioReader.java:108)
 at ptolemy.domains.de.kernel.DEDirector.fire(DEDirector.java:568)
 at ptolemy.actor.CompositeActor.fire(CompositeActor.java:458)
 at ptolemy.actor.Manager.iterate(Manager.java:714)
 at ptolemy.actor.Manager.execute(Manager.java:349)
 ... 2 more
Caused by: java.lang.ClassNotFoundException: com.google.common.collect.Maps
 at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:264)
 at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)
 ... 10 more
Caused by: java.lang.NoClassDefFoundError: com/google/common/collect/Maps
 at com.google.gdata.wireformats.AltRegistry.<init>(AltRegistry.java:118)
 at com.google.gdata.wireformats.AltRegistry.<init>(AltRegistry.java:100)
 at com.google.gdata.client.Service.<clinit>(Service.java:546)
 at AtomicBroadcast.GoogleFinance.GooglePortfolioReader.fire(GooglePortfolioReader.java:108)
 at ptolemy.domains.de.kernel.DEDirector.fire(DEDirector.java:568)
 at ptolemy.actor.CompositeActor.fire(CompositeActor.java:458)
 at ptolemy.actor.Manager.iterate(Manager.java:714)
 at ptolemy.actor.Manager.execute(Manager.java:349)
 at ptolemy.actor.Manager.run(Manager.java:1119)
 at ptolemy.actor.Manager$3.run(Manager.java:1160)
Caused by: java.lang.ClassNotFoundException: com.google.common.collect.Maps
 at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
 at java.lang.ClassLoader.loadClass(ClassLoader.java:264)
 at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)
 ... 10 more
4

3 に答える 3

4

プロジェクトのクラスパスが不足しているようですgoogle-collect-1.0-rc1.jar

プロジェクトのクラスパスを編集してそこに追加するだけです(または、使用する場合はMavenなどによって追加されることを確認してください)。

于 2010-06-10T04:56:44.283 に答える
1

2つの類似したエラーメッセージの違いに注意する必要があります。SanjivJivanの素晴らしい記事「ClassNotFoundExceptionとNoClassDefFoundErrorの違い」を読むことをお勧めします。 http://www.jroller.com/sjivan/entry/difference_between_classnotfoundexception_and_noclassdeffounderror

于 2010-06-11T08:37:27.887 に答える
1

私は同様の問題に出くわします。google-collect-1.0-rc1.jargdata api で見つかりませんでした。しかし、このスレッドは私の問題を解決しました:

  • プロジェクトに guava.xxx.jar を追加します。Guavaは、古い Google Collections Library と完全に互換性のあるスーパーセットです。
  • guava-xxxx.jar は gdata-samples/java/deps/guava.xxxx.jar にあります。または、ここからダウンロードしてください。

Google では、google-collect-1.0.jar の代わりに Guava を推奨しています。ここを参照

于 2012-12-22T21:51:43.970 に答える