سؤال

ينشئ الرمز أدناه خطأ باستخدام 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

ما يمكن أن يكون المشكلة؟

هل كانت مفيدة؟

المحلول

لقد فاتتك لتشمل جرة التبعية مع الفصل org.aopalliance.intercept.MethodInterceptor في classpath.

نصائح أخرى

كما بوريس بافلوفيتش يذكر في إجابته، أنت تفتقد جرة. على وجه التحديد ملف Aopalliance.jar، الذي يأتي في الغيار ملف مضغوط

بدلا من ذلك، قد تحاول استخدام Guice-2.0-no_aop.jar, ، لكنني لست متأكدا مما إذا كان ذلك سيعمل.

يعتمد إضافة هذا الملف إلى ClassPath على الأداة التي تستخدمها لتشغيل رمز 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
  • إذا كنت تقوم بتشغيل Java من Eclipse، فاقم عادة سيكون لديك نوع من LIB / Directory. ضع جرة الخاص بك هناك، ثم انقر بزر الماوس الأيمن فوق Jar -> Build Path -> إضافة إلى بناء المسار

لقد واجهت هذه المشكلة أمس، يتم إدارة التبعية من قبل Maven، وبالتالي فإن Aopalliance.jar في Classpath بلا شك.

تحديث jetty من الإصدار 6.1.10 إلى 6.1.26 إصلاح المشكلة.

المشكلة الحقيقية هنا هي الحاوية لا تدعم aopalliance.jar. آمل أن تساعد شخص ما هناك بشدة يبحث عن حل.

لقد واجهت هذه المشكلة اليوم. في الواقع لا يمكن أن تجد Tomcat الفصل في ليب. لذلك فقط انسخ AOPALLIANCE.JAR في مجلد LIB في Tomcat، هذا يكفي.

إضافة الجرار أدناه تعمل بشكل جيد بالنسبة لي.
javax.inject.jar.
Guice-3.0-no_aop.jar

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top