Pergunta

Eu tenho um projeto Java em que estou trabalhando, que estava trabalhando até alguns dias atrás. Não tenho certeza do que fiz com a minha configuração Eclipse para mangueira, mas agora estou recebendo um java.lang.classnotfoundException quando tento executar algum código que acessa a API do Google Finance. Eu criei um pequeno aplicativo de teste que usa a API do Google Finance por conta própria e isso parece funcionar. Então, acho que este é um problema específico do projeto. Qualquer ajuda seria muito apreciada. Aqui está o rastreamento da pilha:

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
Foi útil?

Solução

Parece que o seu projeto de classe está faltando google-collect-1.0-rc1.jar

Obviamente, você o possui no seu disco rígido, basta editar o projeto do projeto e adicioná -lo lá (ou verifique se ele é adicionado pelo Maven/tal se você os usar).

Outras dicas

Você terá que estar ciente da diferença entre duas mensagens de erro semelhantes. Sugiro que você leia o artigo fantástico "Diferença entre ClassNotFoundException e NoclassDeffoundError" de Sanjiv Jivan. http://www.jroller.com/sjivan/entry/difference_between_classnotfoundexception_and_noclassDeffoundError

Eu encontro o problema similar. Eu não encontrei google-collect-1.0-rc1.jar Na API do GDATA. Mas isso fio resolveu meu problema:

  • Adicione guava.xxx.jar ao seu projeto. Goiaba é um superconjunto totalmente compatível da antiga biblioteca do Google Collections.
  • Você pode encontrar guava-xxxx.jar em gdata-amostras/java/deps/guava.xxxx.jar. Ou faça o download de aqui.

O Google recomenda goiaba em vez do google-collect-1.0.jar. Veja aqui

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top