Статус: Участник
Группы: Участники
Зарегистрирован: 13.05.2021(UTC) Сообщений: 17
|
Добрый день, подскажите, какие пакеты необходимо подключать, желательно бы maven. Получаю ошибку о ненайденном классе: Цитата:Exception in thread "main" java.lang.NoClassDefFoundError: org/bouncycastle/cms/CMSException at com.company.Main.main(Main.java:106) Caused by: java.lang.ClassNotFoundException: org.bouncycastle.cms.CMSException Вот код: Код:
PrivateKey privateKey = (PrivateKey) ks.getKey( alias, keystorePass.toCharArray() );
X509Certificate cert = (X509Certificate) ks.getCertificate( alias );
List<X509Certificate> chain = Arrays.asList( cert );
//new sign
CAdESSignature cadesSignature = new CAdESSignature( true );
//add certs in sign
Collection<X509CertificateHolder> holderList = new ArrayList<X509CertificateHolder>();
for (X509Certificate cert1 : chain)
{
holderList.add(new X509CertificateHolder(cert1.getEncoded()));
}
cadesSignature.setCertificateStore(new CollectionStore(holderList));
Пробовал подключать org.bouncycastle:bcpkix-jdk15on различных версий, но безрезультатно.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Здравствуйте. В папке dependencies дистрибутива jcp лежат библиотеки bc, в имени файлов есть версии, которые можно указать для maven. Если дистрибутив jcp из последних, то может быть bc 1.60. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 13.05.2021(UTC) Сообщений: 17
|
В скачанной версии с оффициального сайта в папке зависимостей лежит bcpkix-jdk15on-1.50. Подключение его, да и всех остальных jar не дает нужного результата. Из maven версия 1.60 так же не помогает.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Автор: imgen В скачанной версии с оффициального сайта в папке зависимостей лежит bcpkix-jdk15on-1.50. Значит, такая и должна быть использована. Возможно, у вас подключена также другая версия (или лежит в lib/ext, или иначе). |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 13.05.2021(UTC) Сообщений: 17
|
Для тех, кто столкнется с такой ошибкой. Необходимо скопировать самостоятельно все пакеты bc в папку jre/lib/ext/
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.08.2019(UTC) Сообщений: 10
|
А есть способ использовать bouncycastle из maven?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,963 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Автор: Nikita.Mikhailov А есть способ использовать bouncycastle из maven? Вы имеете в виду не класть в lib/ext? С версией JCP 2.0- A для java 10+. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.08.2019(UTC) Сообщений: 10
|
Цитата:Вы имеете в виду не класть в lib/ext? Да, именно. Но почему-то не получается поднять в java 11 + tomcat 9. Пока удалось перенесением библиотек bouncycastle в папку /tomcat/lib Тоесть, если так не делать будет ошибка, что класс не найден, хотя он есть в WEB-INF/lib, но почему-то не подгружается.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 21.11.2010(UTC) Сообщений: 1,098
Сказал(а) «Спасибо»: 7 раз Поблагодарили: 151 раз в 136 постах
|
У сервлет-контейнера есть три класс-путя (Котяра): 1. Системный (устанавливается перед запуском JVM); 2. Серверный CATALINA.HOME; 3. Экземпляра CATALINA.BASE. Плюс - контексты "приложений" сайта. Так вот, размещать "глобальные" классы в контексте приложения - плохая идея. Плохая по целому ряду причин, включая недоступность прикладного контекста в контексте экземпляра.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 22.08.2019(UTC) Сообщений: 10
|
В полне подозреваю, что я что-то не понимаю, но тем не менее спасибо за ответ. Просто в документации tomcat 9 указывается порядок работы classloader - https://tomcat.apache.or.../class-loader-howto.htmlЦитата: Bootstrap classes of your JVM /WEB-INF/classes of your web application /WEB-INF/lib/*.jar of your web application System class loader classes (described above) Common class loader classes (described above)
Тоесть классы из /WEB-INF/lib таки грузятся, но в моём случае грузятся не все что нужны. Получается из вашего комментария, для того чтобы bouncycastle работал из maven, мне и все JCP библиотеки нужно перенести в WEB-INF/lib, чтобы соблюсти области видимости?
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close