iText Javaを使用しようとしています。例「 署名方法 」を実行すると、次のエラーが発生します。
Caused by: Java.lang.ClassNotFoundException: org.bouncycastle.tsp.TimeStampTokenInfo
"iText入門-PDF iTextを使用して)に署名する方法" に従って、 BouncyCastle を使用する必要があります。
ファイルをダウンロードしました:bcprov-jdk15on-147.jarから BouncyCastleダウンロードページ
プロジェクトに追加:Java Build Path/Libraries/Add External JARs ...
次の行を追加しました。
Security.addProvider(new BouncyCastleProvider());
この例を実行すると、同じエラーが発生します。
そこで、「PKIX/CMS/EAC/PKCS/OCSP/TSP/OPENSSL」というタイトルのbcpkix-jdk15on-147.jarファイルをダウンロードしました
プロジェクトに追加:Java Build Path/Libraries/Add External JARs ...
今、2つのジャーがあります。
この例を実行すると、次のエラーが発生します。
Caused by: Java.lang.ClassNotFoundException: org.bouncycastle.asn1.DEREncodable
ファイル「bcprov-ext-jdk15on-147.jar」をダウンロードしようとしましたが、問題は解決しませんでした。
Windows 7 64ビットでiText 5.2.1とEclipseを使用しています。
BouncyCastleライブラリは、iTextのような他のライブラリとの互換性を壊したAPIの大きな変更を受けています。
どちらか
bouncyCastleライブラリの以前のバージョンを使用します。古いバージョンは here にあります。ただし、この特定のバージョンのBCと互換性のあるiTextの適切なバージョンを見つける必要があります。
iTextの独自のビルドを作成します(SVNトランクが修正されました)。 iTextはMavenでビルドできます(SVNのルートに短い readmeファイル があります)。それはあなた自身の責任であることに注意してください、トランクにバグがあるかもしれません。
iTextの次のバージョンを待ちます。私の経験から、iTextのリリースは2か月ごとに行われます。私はiTextコミッターではありませんので、ETAを提供することはできません。
より多くの情報を見つけることができます このスレッドで
iTextはbouncycastleの依存関係をオプションとしてマークします。それらが必要な場合は、独自のpomファイルに依存関係を追加する必要があります。
プロジェクトに含める依存関係を見つけるには、使用しているバージョンのitextpdf pom.xmlファイル(5.3.2、 here など)を開き、2つのbouncycastle依存関係を検索します。
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.47</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcmail-jdk15on</artifactId>
<version>1.47</version>
<optional>true</optional>
</dependency>
それらをpomファイルにコピーし、optionalオプションを削除します。
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.3.2</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.47</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcmail-jdk15on</artifactId>
<version>1.47</version>
</dependency>
Itextpdfバージョン5.5.4では、org.bouncycastleの依存関係は<optional>true</optional>
。つまり、これらの依存関係を独自のPOMに含める必要があります。そうしないと、classnotfound例外が発生する可能性があります。
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.4</version>
</dependency>
<!-- Bouncycastle dependencies necessary as they are optional = true
in itextpdf ... but they're not-so-optional in reality -->
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.49</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcpkix-jdk15on</artifactId>
<version>1.49</version>
</dependency>
bcprov-jdk15on-147のバージョンから、DEREncodableのクラスはorg.bouncycastle.asn1のパスの下に存在しなくなりました。この質問を解決するには、146より前のバージョン(146を含む)を使用できます。
Bouncycastle.orgで入手できるjarにこのクラスが含まれていないように見えるのは奇妙です。おそらく、 このページ(リンク) にリストされている場所のいずれかを使用することができます。
幸いなことに、依存関係のjarファイルがiTextとともに配信されています。
以下のリポジトリリンクを確認し、extrajars.Zipファイルをダウンロードしてください
私は同じ問題を抱えていますが、libreriaをダウンロードして/ WEBINF/LIB上のそれらのファイルを更新するときに修正します
同じ障害が発生したjruby-ersの場合、jruby-complete-1.6.6.jarからjruby-complete-9.1.13.0.jarに更新しましたが、問題は解決したようです... FWIW ...