Frage

Der folgende Code generiert bei Verwendung von Guice 2.0 einen Fehler.Mit Guice 1.0 ist alles in Ordnung.Das JDK ist Java 6 Update 15.

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

Der Fehler ist:

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

Was kann das Problem sein?

War es hilfreich?

Lösung

Sie haben verpasst einen Abhängigkeit jar mit der Klasse org.aopalliance.intercept.MethodInterceptor im Classpath enthalten.

Andere Tipps

Boris Pavlovic in seiner Antwort erwähnt, Sie fehlt ein Krug. Insbesondere die aopalliance.jar-Datei, die in der guice Zip-Datei kommt

Alternativ können Sie versuchen, guice-2.0-no_aop.jar , aber ich bin nicht sicher, ob das funktionieren wird.

Sie diese Datei auf den Classpath Hinzufügen, hängt von dem Werkzeug, das Sie Ihren Java-Code ausführen verwenden.

  • Wenn Sie Java von der Kommandozeile ausgeführt werden:
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
  • Wenn Sie Java von Eclipse ausgeführt wird, Regel werden Sie irgendeine Art von haben lib / Verzeichnis. Setzen Sie Ihr Glas gibt, dann auf dem Glas der rechten Maustaste -> Build Pfad -> Pfad hinzufügen Build

ich in dieses Problem gestern, wird die Abhängigkeit von Maven verwaltet werden, so dass die aopalliance.jar in Classpath ohne Zweifel.

Update Anlegesteg von Version 6.1.10 auf 6.1.26 das Problem behoben.

Das eigentliche Problem hier ist der Behälter aopalliance.jar nicht unterstützt. Ich hoffe, dass da jemand helfen wird dringend nach einer Lösung suchen.

Ich laufe in dieses Problem heute. Eigentlich kann der Kater nicht die Klasse in seiner lib finden. So kopieren Sie einfach die aopalliance.jar in den Ordner lib in tomcat, das reicht.

Das Hinzufügen der folgenden Gläser funktioniert bei mir einwandfrei.
javax.inject.jar
guice-3.0-no_aop.jar

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top