2017-02-01 10 views
0

私はJavaとGoogle Guiceで最初のアプリを起動しようとしています。ベスト私はウェブ上でどこに私の質問に対処することができていない他を見つけることができます。コンソールからJavaアプリケーションを実行すると、次のエラーが表示されます。Google Guiceでクラスが見つかりません

[email protected] ~/dev/options/console/target $ java -jar ServerConsole-R1.jar 
Exception in thread "main" java.lang.NoClassDefFoundError: com/google/inject/Module 
    at Application.Startup.main(Startup.java:38) 
Caused by: java.lang.ClassNotFoundException: com.google.inject.Module 

私はpomファイルで参照されているgoogle guiceを持っています。 mvn -compileまたはmvn -installを呼び出すと、Mavenにエラーは発生しません。ローカルのmavenリポジトリディレクトリを確認し、guice jarファイルをダウンロードしました。

マイポンポンファイルは次のようになります。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>tatmancapital</groupId> 
    <artifactId>ServerConsole</artifactId> 
    <version>R1</version> 

    <dependencies> 
     <!-- https://mvnrepository.com/artifact/com.google.inject/guice --> 
     <dependency> 
      <groupId>com.google.inject</groupId> 
      <artifactId>guice</artifactId> 
      <version>4.0</version> 
     </dependency> 
     <dependency> 
      <groupId>com.google.inject.extensions</groupId> 
      <artifactId>guice-multibindings</artifactId> 
      <version>4.0</version> 
     </dependency> 
     <dependency> 
      <groupId>com.google.guava</groupId> 
      <artifactId>guava</artifactId> 
      <version>21.0</version> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
     <plugin> 
      <!-- Build an executable JAR --> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <version>3.0.2</version> 
      <configuration> 
      <archive> 
       <manifest> 
       <addClasspath>true</addClasspath>    
       <mainClass>Application.Startup</mainClass> 
       </manifest> 
      </archive> 
      </configuration> 
     </plugin>   
     </plugins> 
    </build> 
</project> 

私はjarファイルを開いて割れたとスプリングブートプロジェクトのjarファイルに比べて、私はと呼ばれるjarファイルに不足しているフォルダを検索:BOOT-INF。

私はすべての参照が正しいと思われます。しかしビルド出力には、サポートされているjarファイルがありません。

何が欠けていますか?

のthnx マット

+0

' com.google.inject:guice'を '4.1.0'に更新し、' mvn package'を使ってjarファイルを作成することができます – nullpointer

+0

結果。出力Jarファイルはわずか4Kで、私のアプリケーションコードのみを含んでいます。 – tatmanblue

+0

4Kが小さすぎます。 'jar-plugin'についても不明です。 'shade plugin'を使ってパッケージ化しました。私たちのためにうまく動作しているようだ。モジュールのディレクトリ構造も共有してください。 – nullpointer

答えて

0

私は別のパッケージを使用して終了。

私の新しいポンポンファイルが(私も上に示した未使用の依存関係を削除しますが、その変更は私の問題を解決できなかった)次のようになります。私は、実行可能JARファイルを与えた

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>tatmancapital</groupId> 
    <artifactId>ServerConsole</artifactId> 
    <version>R1</version> 

    <dependencies> 
     <dependency> 
      <groupId>com.google.inject</groupId> 
      <artifactId>guice</artifactId> 
      <version>4.1.0</version> 
     </dependency>  
    </dependencies> 

    <build> 
     <plugins>  
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>3.0.0</version> 
      <configuration> 
       <archive> 
        <manifest>    
        <mainClass>Application.Startup</mainClass> 
        </manifest> 
       </archive> 
       <descriptorRefs> 
        <descriptorRef>jar-with-dependencies</descriptorRef> 
       </descriptorRefs> 
      </configuration> 
      <executions> 
       <execution> 
        <id>make-assembly</id> <!-- this is used for inheritance merges --> 
        <phase>package</phase> <!-- bind to the packaging phase --> 
        <goals> 
         <goal>single</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin>  
     </plugins> 
    </build> 
</project> 

。ありがとう@nullpointer。

jarファイル名は恐ろしいです。マニフェストにpackage nameメンバを使用しても、それには影響しませんでした。

ターゲットでこのポンポン付きM

0

/あなたは二つの異なる瓶、ServerConsole-R1.jarとServerConsole-R1-ジャーと-dependencies.jarを持っている必要があり、小さな

第一、第二、実行してみてください`mvn java:exec 'でjarを実行すると、すべての必要なクラスパスが追加されます

関連する問題