Вопрос по exception, java – iText / BouncyCastle ClassNotFound org.bouncycastle.asn1.DEREncodable and org.bouncycastle.tsp.TimeStampTokenInfo

20

Я пытаюсь использоватьIText Джава. Когда вы запустите пример & quot;как подписать& Quot; возникает следующая ошибка:

Caused by: java.lang.ClassNotFoundException: org.bouncycastle.tsp.TimeStampTokenInfo

Согласно& quot; Начало работы с iText - Как подписать PDF с помощью iText & quot;Я должен использоватьBouncyCastle.

Я скачал файл: bcprov-jdk15on-147.jar изСтраница загрузки BouncyCastle.
И добавил в проект: Java Build Path / Библиотеки / Добавить внешние JAR-файлы ...

Я добавил следующую строку:

Security.addProvider(new BouncyCastleProvider());

При запуске примера возникает та же ошибка.
Поэтому я скачал другой файл: bcpkix-jdk15on-147.jar, озаглавленный «PKIX / CMS / EAC / PKCS / OCSP / TSP / OPENSSL».
И добавил в проект: Java Build Path / Библиотеки / Добавить внешние JAR-файлы ...
Теперь у меня есть две банки.

При запуске примера возникает следующая ошибка:

Caused by: java.lang.ClassNotFoundException: org.bouncycastle.asn1.DEREncodable

Я попытался загрузить файл & quot; bcprov-ext-jdk15on-147.jar & quot; но не решил проблему.

Я использую iText 5.2.1 и затмение на Windows 7 64 бит.

Ваш Ответ

8   ответов
14

В версии 5.5.4 itextpdf зависимости org.bouncycastle помечаются как<optional>true</optional>, Это означает, что вы ДОЛЖНЫ включить эти зависимости в свой собственный pom, или вы можете столкнуться с исключениями, не найденными в классе.

<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>
0

Для jruby-ers с той же ошибкой я обновил jruby-complete-9.1.13.0.jar с jruby-complete-1.6.6.jar, и проблема, похоже, разрешилась ... FWIW ...

1

Странно, что банки, доступные на bouncycastle.org, по-видимому, не содержат этот класс. Возможно, вы захотите использовать один из мест, перечисленных вэта страница (ссылка).

Меня поражает, что они удалили этот класс, но все еще ссылаются на него из своего собственного файла jar. У нас есть тест, которыйonly касается BouncyCastle и выдает точно такую же ошибку.
27

iText помечает зависимости bouncycastle как необязательные. Если они вам нужны, вам нужно добавить зависимости в ваш собственный файл pom.

Чтобы узнать, какую зависимость включить в ваш проект, откройте файл itextpdf pom.xml той версии, которую вы используете (например, 5.3.2,Вот) и найдите 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>
Я люблю тебя @jehon, ты мужчина.
Спасибо человеку, это прекрасно работает
bcprov-jdk15on: 1.48 также работает и в настоящее время включен в ZIP-файл extra-jar, который K & # x131; van & # xE7; Sahici упомянутый выше
1

К счастью, фляги зависимости теперь поставляются вместе с iText.

Пожалуйста, проверьте ссылку на репозиторий ниже и загрузитеextrajars.zip файл

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

3

из версии bcprov-jdk15on-147 класс DEREncodable больше не существует по пути org.bouncycastle.asn1. Вы можете использовать версию до 146 (включая 146), чтобы решить этот вопрос.

Да, пара важных классов изменилась в версии 1.47 bouncycastle:bouncycastle.org/wiki/display/JA1/…<,/span> – andrew lorien Apr 30 '15 at 23:32
19

В библиотеках BouncyCastle происходят серьезные изменения API, которые нарушают совместимость с другими библиотеками, такими как iText.

Или

  • use a previous version of BouncyCastle libs. Old versions can be found here. However, you'll have to find the right version of iText that was compatible with this particular version of BC.

  • make your own build of iText (the SVN trunk has been fixed). iText can be build with Maven (there's a short readme file at the root of the SVN). Please note that it's at your own risk, there may be bugs in trunk.

  • wait for the next version of iText. From my experience, iText releases come every couple of months, sometime more often, sometimes less. I'm not an iText committer though, so I can't give you any ETA.

Больше информации можно найтив этой теме

Если у вас не будет времени, я буду ждать следующего релиза iText. Если вы не можете, я отредактировал свой ответ с более подробной информацией ...
Для iText2.1.7 и Sun JDK 1.7 Эта ссылка исправила проблему DEREncodable not_found.repo2.maven.org/maven2/org/bouncycastle/bcprov-jdk15%2b/1.46/…
Что вы предлагаете? Я пытался получить SVNitext.svn.sourceforge.net/svnroot/itext но я не знаю, как скомпилировать. Я пытался использовать старую версию BouncyCastlerepo1.maven.org/maven2/org/bouncycastle безуспешно. Cobaia
1

У меня та же проблема, но я исправил ее, когда я скачал libreria и обновил эти файлы в / WEBINF / LIB

Похожие вопросы