2009-08-12 7 views
6

아래 코드는 Guice 2.0을 사용하여 오류를 생성합니다. Guice 1.0에서는 모든 것이 잘됩니다.Guice 2.0의 ClassNotFoundException

Exception in thread "main" java.lang.NoClassDefFoundError: [Lorg/aopalliance/intercept/MethodInterceptor; 
    at java.lang.Class.getDeclaredMethods0(Native Method) 
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2427) 
    at java.lang.Class.getDeclaredMethods(Class.java:1791) 
    at com.google.inject.internal.ProviderMethodsModule.getProviderMethods(ProviderMethodsModule.java:78) 
    at com.google.inject.internal.ProviderMethodsModule.configure(ProviderMethodsModule.java:70) 
    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223) 
    at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:232) 
    at com.google.inject.spi.Elements.getElements(Elements.java:101) 
    at com.google.inject.InjectorShell$Builder.build(InjectorShell.java:135) 
    at com.google.inject.InjectorBuilder.build(InjectorBuilder.java:102) 
    at com.google.inject.Guice.createInjector(Guice.java:92) 
    at com.google.inject.Guice.createInjector(Guice.java:69) 
    at com.google.inject.Guice.createInjector(Guice.java:59) 
    at App.main(App.java:6) 
Caused by: java.lang.ClassNotFoundException: org.aopalliance.intercept.MethodInterceptor 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) 
    ... 14 more 

무슨 문제가 될 수 있습니다 다음 JDK는 오류가 15

public class App { 
    public static void main(String[] args) { 
     Guice.createInjector(new AbstractModule() { 
      @Override 
      protected void configure() { 
       // just testing 
      } 
     }); 
    } 
} 

자바 6 업데이트입니다?

답변

11

클래스 경로에 org.aopalliance.intercept.MethodInterceptordependency jar을 포함시키지 않으 셨습니다.

+0

일반적인 경우. 고마워!! –

6

Boris Pavlović이 답변에서 언급 했으므로 병이 없습니다. 특히 guice에있는 aopalliance.jar 파일 zip file

또는 guice-2.0-no_aop.jar을 사용해 볼 수도 있지만 작동하는지 확실하지 않습니다.

이 파일을 클래스 경로에 추가하는 것은 Java 코드를 실행하는 데 사용하는 도구에 따라 다릅니다.

  • 명령 줄에서 자바를 실행하는 경우 : 이클립스에서 자바를 실행하는 경우
windows: java -cp aopalliance.jar;guice-2.0.jar;other_jars.jar YourMainClass 
*nix: java -cp aopalliance.jar:guice-2.0.jar:other_jars.jar YourMainClass 
  • 는 는 일반적으로 당신은 LIB의 몇 가지 유형을해야합니다/디렉토리. > 빌드 경로 - - 거기 항아리를 넣어 다음 항아리에 마우스 오른쪽 단추로 클릭 aopalliance.jar이 때문에> 경로를 어제이 문제로 실행
1

를 구축하기 위해 추가 종속성은 메이븐에 의해 관리됩니다 의심의 여지없이 classpath에.

버전 6.1.10에서 6.1.26으로 부두 업데이트시 문제가 해결되었습니다.

여기 실제 문제는 컨테이너가 aopalliance.jar를 지원하지 않는다는 것입니다. 나는 그것이 필사적으로 해결책을 찾고있는 누군가를 도울 수 있기를 바랍니다.

+0

6.1.26을 사용하고 있지만 여전히 문제가 발생합니다. ( – ndtreviv

0

오늘이 문제가 발생합니다. 실제로 바람둥이는 그 lib에서 클래스를 찾을 수 없습니다. 그냥 aopalliance.jar를 tomcat의 lib 폴더에 복사하면됩니다.

-2

아래의 jar 파일을 추가하면 정상적으로 작동합니다.
javax.inject.jar 것 같아요 RTFM의
guice-3.0-no_aop.jar