2016-11-30 12 views
0

私は、単一のJARを構築するためにMavenのアセンブリのプラグインを使用していますが、私はエラーがMavenのアセンブリ:NoClassDefFoundErrorが

Exception in thread "main" java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider 

、これはどのようにされている以下の

java -jar target/pdfbox-printing-1.0-SNAPSHOT-jar-with-dependencies.jar 

を実行した後に、このエラーを取得しています私はここ

mvn clean compile assembly:single 

は私pom.xml

である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/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.company.printing</groupId> 
    <artifactId>pdfbox-printing</artifactId> 
    <packaging>jar</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>pdfbox-printing</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.pdfbox</groupId> 
     <artifactId>pdfbox</artifactId> 
     <version>2.0.0</version> 
    </dependency> 
    </dependencies> 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <executions> 
      <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>single</goal> 
      </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <archive> 
      <manifest> 
       <mainClass>com.company.printing.App</mainClass> 
      </manifest> 
      </archive> 
      <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
      </descriptorRefs> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

実際には、apache pdfboxを使用するプロジェクトを構築しようとしています。私はMavenアセンブリプラグインが1つのJAR内のすべての依存関係をバンドルすると思っていましたが、本当の場合にはなぜこのエラーが発生しますか?

+0

BouncyCastleは*オプションの依存関係です(暗号化または署名されたPDFを処理する必要がある場合のみ必要です)。おそらく 'maven-assembly-plugin'にオプションの依存関係は含まれていませんか? – mkl

+0

mvnコンパイルは正常に実行されますか? – nullpointer

+0

yes @nullpointer – bazi

答えて

1

エラーが読むと、あなたは<dependencies>内の以下を追加することで、同じのためにMavenのライブラリを使用することができ、その場合にはorg/bouncycastle/jce/provider/BouncyCastleProviderためNoClassDefFoundErrorがある:

<!-- https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk16 --> 
<dependency> 
    <groupId>org.bouncycastle</groupId> 
    <artifactId>bcprov-jdk15on</artifactId> 
    <version>1.54</version> 
</dependency> 
<dependency> 
    <groupId>org.bouncycastle</groupId> 
    <artifactId>bcmail-jdk15on</artifactId> 
    <version>1.54</version> 
</dependency> 
<dependency> 
    <groupId>org.bouncycastle</groupId> 
    <artifactId>bcpkix-jdk15on</artifactId> 
    <version>1.54</version> 
</dependency> 

これは、あなたがパッケージと使用をインポート役立つものあなたのコードに必要なクラス。

その他の依存関係が必要な場合があります。hereを参照してください。

+1

1.45は2.0の正しいバージョンではありません。ここをクリックしてください:https://pdfbox.apache.org/2.0/dependencies.html –

+0

@TilmanHausherrあなたがそれを使用した場合、更新されたバージョンを追加して投稿を編集してください。私はちょうど必要なクラスが正しい依存関係を含んでいることを確認しました。 – nullpointer

関連する問題