web-dev-qa-db-ja.com

iText / BouncyCastle ClassNotFound org.bouncycastle.asn1.DEREncodableおよびorg.bouncycastle.tsp.TimeStampTokenInfo

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を使用しています。

20
Cobaia

BouncyCastleライブラリは、iTextのような他のライブラリとの互換性を壊したAPIの大きな変更を受けています。

どちらか

  • bouncyCastleライブラリの以前のバージョンを使用します。古いバージョンは here にあります。ただし、この特定のバージョンのBCと互換性のあるiTextの適切なバージョンを見つける必要があります。

  • iTextの独自のビルドを作成します(SVNトランクが修正されました)。 iTextはMavenでビルドできます(SVNのルートに短い readmeファイル があります)。それはあなた自身の責任であることに注意してください、トランクにバグがあるかもしれません。

  • iTextの次のバージョンを待ちます。私の経験から、iTextのリリースは2か月ごとに行われます。私はiTextコミッターではありませんので、ETAを提供することはできません。

より多くの情報を見つけることができます このスレッドで

19
Alexis Pigeon

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>
27
jehon

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>
14
CorayThan

bcprov-jdk15on-147のバージョンから、DEREncodableのクラスはorg.bouncycastle.asn1のパスの下に存在しなくなりました。この質問を解決するには、146より前のバージョン(146を含む)を使用できます。

4
Bill Watson

Bouncycastle.orgで入手できるjarにこのクラスが含まれていないように見えるのは奇妙です。おそらく、 このページ(リンク) にリストされている場所のいずれかを使用することができます。

1
srkavin

幸いなことに、依存関係のjarファイルがiTextとともに配信されています。

以下のリポジトリリンクを確認し、extrajars.Zipファイルをダウンロードしてください

http://sourceforge.net/projects/itext/files/

1
Kıvanç Sahici

私は同じ問題を抱えていますが、libreriaをダウンロードして/ WEBINF/LIB上のそれらのファイルを更新するときに修正します

1
Jules

同じ障害が発生したjruby-ersの場合、jruby-complete-1.6.6.jarからjruby-complete-9.1.13.0.jarに更新しましたが、問題は解決したようです... FWIW ...

0
rogerdpack