2009-08-12 13 views
6

以下のコードは、Guice 2.0を使用してエラーを生成します。 Guice 1.0ではすべてがうまくいきます。 JDKはJava 6のアップデート15Guice 2.0のClassNotFoundException

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 

問題になる可能性がありますか?

答えて

11

クラスorg.aopalliance.intercept.MethodInterceptordependency jarをクラスパスに含めることができませんでした。

+0

典型的なケース。どうも!! –

6

Boris Pavlovićは、彼の答えでは、あなたは瓶が不足していると言います。具体的にはguiceに入っているaopalliance.jarファイルzip file

また、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にいくつかの種類があるでしょう/ディレクトリ。そこにあなたのjarファイルを入れて、 は、瓶の上で右クリック - > ビルドパス - 私は昨日、この問題に遭遇しaopalliance.jarがあるので、>パスに
1

を構築するための追加、依存関係は、Mavenのによって管理されていますクラスパスで疑いの余地はありません。

バージョン6.1.10から6.1.26のjettyをアップデートして問題を修正しました。

実際の問題は、コンテナがaopalliance.jarをサポートしていないことです。私はそれが絶望的に​​解決策を探している人を助けることを願っています。

+0

私は6.1.26を使用していますが、まだ問題が発生しています:( – ndtreviv

0

今日、この問題が発生しました。実際には、tomcatはlib内のクラスを見つけることができません。だから、aopalliance.jarをtomcatのlibフォルダにコピーすれば十分です。

-2

以下のjarファイルを追加すると、うまく動作します。私が推測するRTFMの
javax.inject.jar
Guiceの-3.0-no_aop.jar