java.lang.classnotfoundException
-
26-09-2019 - |
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
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