2010-06-10 8 views
3

나는 며칠 전까지 일하고 있던 자바 프로젝트를 가지고있다. 나는 내 Eclipse 설정에 무엇을했는지 확신 할 수 없지만 이제는 google finance API에 액세스하는 코드를 실행하려고 할 때 java.lang.ClassNotFoundException이 발생합니다. 나는 자체적으로 구글 파이낸싱 API를 사용하는 작은 테스트 애플리케이션을 만들었다. 그래서, 저는 이것이 프로젝트 특유의 문제라고 생각합니다. 어떤 도움이라도 대단히 감사하겠습니다. 여기에 스택 추적입니다 :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 

답변

4

당신의 프로젝트 클래스 패스 당신은 분명히 당신의 하드 드라이브에있는 google-collect-1.0-rc1.jar

부족한 것 같다, 그냥 프로젝트의 클래스 경로를 편집하고 거기에 추가 (또는 확인이 추가됩니다 확인 Maven/당신이 그들을 사용하는 경우 등).

+0

이 문제가 해결되었습니다. 정말 고마워. 이전에 classpath에 명시 적으로 google-collect-1.0-rc1.jar를 추가 한 적이 거의 없습니다. 그러나 이것은 절대적으로 문제였습니다. 다시 한번 감사드립니다. – user341493

+0

Eclipse는 신비한 방식으로 작동합니다! 기꺼이 도와 드리겠습니다 –

+0

기다림 - 나중에 출시 될 라이브러리의 초기 릴리스 후보를 사용하는 이유는 무엇입니까? (Guava를 사용하기 위해 Guava를 다운로드하고 사용하는 대신, 100 % 호환 수퍼 세트이지만 버그 등이 수정되었습니다.) –

1

나는 비슷한 문제를 겪습니다. gdata api에서 google-collect-1.0-rc1.jar을 찾지 못했습니다.

  • 프로젝트에 guava.xxx.jar 추가 : 하지만이 thread 내 문제를 해결했다. Guava은 이전 Google Collections Library의 완전히 호환되는 수퍼 세트입니다.
  • guava-xxxx.jar는 gdata-samples/java/deps/guava.xxxx.jar에서 찾을 수 있습니다. 또는 here에서 다운로드하십시오.

Google은 google-collect-1.0.jar 대신 Guava를 권장합니다. see here

관련 문제