2017-04-02 12 views
1

を使用して、COM /グーグル/注入/モジュールIは、Googleが提供するDIメカニズムを使用しようとしていますが、私は自分のアプリケーションを実行すると、私は次のエラーを取得しています:java.lang.NoClassDefFoundErrorが:Guiceの

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/inject/Module 
at challenge.App.main(App.java:19) 
Caused by: java.lang.ClassNotFoundException: com.google.inject.Module 
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
... 1 more 

pom.xmlファイルは、次のようになります。

<build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.google.inject</groupId> 
     <artifactId>guice</artifactId> 
     <version>4.1.0</version> 
     <classifier>no_aop</classifier> 
    </dependency> 
    </dependencies> 

そして、私はそれがどのように見える使用していますコード:

Injector injector = Guice.createInjector(new DependenciesModule()); 
    IndexerController indexer = injector.getInstance(IndexerController.class); 

そして、私はcom.google.inject.Guiceとcom.google.inject.Injectorをインポートしました。

私はいくつかの場所を確認していますが、この問題に関連する解決策は見当たりません。

+0

私はあなたが削除できると思います no_aop。それはバージョン3ではなく、4です。 –

+0

こんにちは@JunbangHuangはお返事ありがとう、私はあなたのコメントの後に試しても失敗しました – Miguel

答えて

2

これは実行時にであるという点でMavenの通常の問題のように見えますが、依存クラス(例:Guiceクラス)はJVMでは使用できません。

java -cp 
/path/to/guice.jar: 
/path/too/your-app.jar: 
/path/to/other/classes/not/bundled/in/your-app.jar 
main.MyClass 

(これはすべて1行、見やすくための分割である):

最も簡単な解決策は、あなたのアプリを実行中に明示的にクラスパスの指定を使用することです。

他のソリューションは、あなたは、単にjava -jar uber.jarとして実行することができます実行可能JARの作成を容易にMaven Shade Pluginを使用することです。

+0

ありがとう!、実際には、パッケージを作成し、依存関係をダウンロードする – Miguel

関連する問題