【问题标题】:java.lang.ClassNotFoundExceptionjava.lang.ClassNotFoundException
【发布时间】:2010-06-10 04:52:51
【问题描述】:

我有一个我正在处理的 Java 项目,该项目直到几天前还在工作。我不确定我对我的 Eclipse 设置做了什么来软管它,但现在当我尝试运行一些访问谷歌金融 api 的代码时,我得到了一个 java.lang.ClassNotFoundException。我已经构建了一个小型测试应用程序,它自己使用谷歌金融 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

【问题讨论】:

    标签: java eclipse guava google-finance-api


    【解决方案1】:

    您的项目类路径似乎缺少google-collect-1.0-rc1.jar

    你显然在你的硬盘上拥有它,只需编辑项目类路径并将其添加到那里(或者确保它是由 Maven 添加的/如果你使用它们)。

    【讨论】:

    • 这解决了问题。非常感谢。我几乎可以肯定我之前从未明确将 google-collect-1.0-rc1.jar 添加到类路径中,但这绝对是问题所在。再次感谢。
    • 等等——为什么要使用后来发布的库的早期版本候选? (更不用说现在甚至不推荐使用该版本以支持 Guava。只需下载 Guava 并使用它即可;它是 100% 兼容的超集,但已修复错误等。)
    • @Kevin - 非常好的问题。我建议使用 rc,因为这是我从 Google 代码下载的包的 dep 目录中包含的内容,用于尝试他们的一些 API。
    【解决方案2】:

    您必须注意两个类似错误消息之间的区别。我建议您阅读 Sanjiv Jivan 的精彩文章“ClassNotFoundException 和 NoClassDefFoundError 之间的区别”。 http://www.jroller.com/sjivan/entry/difference_between_classnotfoundexception_and_noclassdeffounderror

    【讨论】:

      【解决方案3】:

      我遇到了类似的问题。我在 gdata api 中没有找到google-collect-1.0-rc1.jar。 但是这个thread 解决了我的问题:

      • 将 guava.xxx.jar 添加到您的项目中。 Guava 是旧 Google Collections Library 的完全兼容的超集。
      • 您可以在 gdata-samples/java/deps/guava.xxxx.jar 中找到 guava-xxxx.jar。或从here下载。

      Google 推荐 Guava 而不是 google-collect-1.0.jar。 see here

      【讨论】:

        猜你喜欢
        • 2015-02-22
        • 2018-01-13
        • 2021-08-15
        • 2014-08-18
        • 2017-02-21
        • 2020-10-18
        • 2013-11-13
        相关资源
        最近更新 更多