문제

아래 코드는 Guice 2.0을 사용하여 오류를 생성합니다. Guice 1.0을 사용하면 모든 것이 괜찮습니다. JDK는 Java 6 업데이트 15입니다.

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

오류 오차는 다음과 같습니다. 오차는 다음과 같습니다. 오차는 다음과 같습니다.

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

문제는 무엇입니까?

도움이 되었습니까?

해결책

당신은 a를 포함하는 것을 놓쳤습니다 의존성 항아리 수업과 함께 org.aopalliance.intercept.MethodInterceptor 클래스 경로에서.

다른 팁

~처럼 보리스 파블로비치 그의 대답에 언급하면, 당신은 항아리를 놓치고 있습니다. 구체적으로 aopalliance.jar 파일은 기체에 나옵니다. 압축 파일

또는 사용해 볼 수도 있습니다 GUICE-2.0-no_aop.jar, 그러나 그것이 그것이 효과가 있는지 확실하지 않습니다.

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

  • 명령 줄에서 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
  • Eclipse에서 Java를 실행하는 경우 일반적으로 일부 유형의 Lib/ Directory가 있습니다. 항아리를 거기에 넣은 다음 항아리를 마우스 오른쪽 버튼으로 클릭하십시오 -> 빌드 경로 -> 빌드 경로에 추가하십시오.

나는 어제이 문제에 빠지면 의존성은 Maven에 의해 관리되므로 aopalliance.jar는 의심의 여지가 없습니다.

버전 6.1.10에서 6.1.26에서 Jetty를 업데이트하면 문제가 해결되었습니다.

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

오늘이 문제가 발생합니다. 실제로 Tomcat은 Lib에서 클래스를 찾을 수 없습니다. 따라서 aopalliance.jar를 Tomcat의 Lib 폴더에 복사하면 충분합니다.

아래 항아리를 추가하는 것은 나에게 잘 작동합니다.
javax.inject.jar
Guice-3.0-no_aop.jar

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top