Pregunta

El código siguiente genera un error con Guice 2.0.Con Guice 1.0 todo está bien.El JDK de Java 6 update 15.

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

El error es:

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

¿Cuál puede ser el problema?

¿Fue útil?

Solución

No ha contestado a incluir una href="http://sourceforge.net/projects/aopalliance/" rel="nofollow noreferrer"> dependencia frasco org.aopalliance.intercept.MethodInterceptor clase en la ruta de clase.

Otros consejos

como Boris Pavlovic menciona en su respuesta, te estás perdiendo de un frasco.Específicamente el aopalliance.jar de archivo, que viene en el guice archivo zip

Alternativamente, usted podría tratar de usar guice-2.0-no_aop.jar, pero no estoy seguro de si funcionará.

Agregar este archivo a la ruta de clases depende de la herramienta que se utiliza para ejecutar el código java.

  • Si está ejecutando java desde la línea de comandos:
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
  • Si está ejecutando java de Eclipse, normalmente, usted tendrá algún tipo de directorio lib/.Pon tu tarro allí, a continuación, haga clic en el jar -> Build Ruta -> Add to Build Path

Me encuentro con este problema ayer, la dependencia es administrado por Maven, por lo que el aopalliance.jar está en la ruta de clase, sin duda.

Actualizar embarcadero de la versión 6.1.10 a 6.1.26 solucionó el problema.

El verdadero problema aquí es el contenedor no admite aopalliance.jar. Espero que le ayudará a alguien allí buscando desesperadamente una solución.

Me encuentro con este problema hoy en día. En realidad, el gato no puede encontrar la clase en su lib. Así que sólo tienes que copiar el aopalliance.jar en la carpeta lib de Tomcat, eso es suficiente.

La adición de la siguiente frascos funciona muy bien para mí.
javax.inject.jar
guice-3.0-no_aop.jar

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top