java.lang.ClassNotFoundException
-
26-09-2019 - |
Domanda
Ho un progetto Java che sto lavorando su cui stava lavorando fino a pochi giorni fa. Non sono sicuro di quello che ho fatto al mio Eclipse set-up per il tubo, ma ora sto ottenendo un java.lang.ClassNotFoundException quando cerco di eseguire del codice che accede l'API di Google finanza. Ho costruito una piccola applicazione di test che utilizza la finanza API di Google da solo e che sembra funzionare. Quindi, penso che questo sia un problema specifico progetto. Qualsiasi aiuto sarebbe molto apprezzato. Ecco l'analisi dello stack:
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
Soluzione
La tua classpath del progetto è carente google-collect-1.0-rc1.jar
È, ovviamente, ce l'ha sul disco rigido, basta modificare il classpath progetto e inserirlo lì (o assicurarsi che viene aggiunto da Maven / come se li si usa).
Altri suggerimenti
Si dovrà essere a conoscenza della differenza tra due messaggi di errore simili. Vi consiglio di leggere il fantastico "Differenza tra ClassNotFoundException e NoClassDefFoundError" articolo dal Sanjiv Jivan. http://www.jroller.com/sjivan/entry/difference_between_classnotfoundexception_and_noclassdeffounderror
Ho eseguito tutto il problema simile. Non ho trovato google-collect-1.0-rc1.jar
in GData API.
Ma questo filo risolto il mio problema :
- Aggiungi guava.xxx.jar nel progetto. Guava è un superset pienamente compatibile del vecchio Google Collezioni Biblioteca.
- Potete trovare guava-xxxx.jar in Gdata-campioni / java / dipendenze / guava.xxxx.jar. O scaricarlo dal qui .
Google consiglia di Guava, invece di google-collect-1.0.jar. vedere qui