2010-06-10 17 views
3

J'ai un projet Java sur lequel je travaillais et qui fonctionnait jusqu'à il y a quelques jours. Je ne suis pas sûr de ce que j'ai fait à mon installation Eclipse pour l'arroser mais maintenant je reçois une exception java.lang.ClassNotFoundException quand j'essaie d'exécuter du code qui accède à l'API google finance. J'ai construit une petite application de test qui utilise l'api de google finance par elle-même et qui semble fonctionner. Donc, je pense que c'est un problème spécifique au projet. Toute aide serait grandement appréciée. Voici la trace de la pile:java.lang.ClassNotFoundException

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 

Répondre

4

Il semble que votre projet classpath manque google-collect-1.0-rc1.jar

Vous avez évidemment sur votre disque dur, il suffit d'éditer le projet classpath et l'ajouter là (ou assurez-vous qu'il est ajouté par Maven/si vous les utilisez).

+0

Cela a résolu le problème. Merci beaucoup. Je suis presque certain que je n'ai jamais explicitement ajouté google-collect-1.0-rc1.jar au classpath avant mais c'était absolument le problème. Merci encore. – user341493

+0

Eclipse fonctionne de manière mystérieuse! Heureux d'aider –

+0

Attendez - pourquoi utiliser un candidat à la libération anticipée d'une bibliothèque qui a été publié plus tard? (Sans compter que même cette version est désormais obsolète en faveur de Guava, il suffit de télécharger Guava et de l'utiliser à la place, c'est un sur-ensemble 100% compatible, mais a corrigé des bugs et autres.) –

1

Je cours à travers le problème similaire. Je n'ai pas trouvé google-collect-1.0-rc1.jar dans gdata api. Mais cette thread a résolu mon problème:

  • Ajouter guava.xxx.jar dans votre projet. Guava est un sur-ensemble entièrement compatible de l'ancienne bibliothèque Google Collections.
  • Vous pouvez trouver guava-xxxx.jar dans gdata-samples/java/deps/guava.xxxx.jar. Ou téléchargez-le à partir du here.

Google recommande Guava au lieu de google-collect-1.0.jar. see here