Совместимы ли библиотеки Java Bouncycastle Java? [закрыто]JAVA

Программисты JAVA общаются здесь
Anonymous
Совместимы ли библиотеки Java Bouncycastle Java? [закрыто]

Сообщение Anonymous »

Я использую несколько сторонних либеров, которые имеют зависимости от различных библиотек Bouncycastle . Здесь некоторые примеры: < /p>

[*] bcpkix-jdk18on < /li>
bcprov-jdk15to18 < /li>
bcprov-lts8on < /li>
bcutil-lts8on < /li>
< /li>
bcutil-lts8on < /li>
/> < /ul>
После обновления одной из этих зависимостей я испытал очень странное поведение во время выполнения, а не на поиске методов или полей. Кажется, что класс версии X был загружен классовым загрузчиком, и после этого несовместимый класс версии Y не мог найти поле в версии X. < /P>
Пока все хорошо. Я попытался исправить это, используя управление зависимостями Maven, чтобы совместимые версии использовались во время компиляции.
Я выбрал 1,79 для bc ...- Jdk15to18 и bc ...- Jdk18on и 2.73.7 для Bc ... Lts8on, потому что: >

2,73.7 для Bc ... Lts8on, потому что /> "Выпуск 2.73.7 8 ноября 2024 года. Этот релиз основан на BC 1.79 [...]" https://www.bouncycastle.org/download/b ... -java-lts/

, поэтому я подумал, что это безопасно, но на самом деле это, кажется, не безопасно. Все еще nosuchfieldexception, nosuchmethodexception и т. Д. < /p>
Я проверил зеркала Github для класса, который сделал некоторые проблемы: < /p>

sha3844digest lts8on версии 1.79 < /li>
sha384digest lts8on версии 1.79 < /li>
sha384digest lts8on. /> < /ul>
Вы можете видеть, что источники разные и объявляют различные публичные методы, например, Sha384digest#newinstance (). < /P>

Первый вопрос: Должен ли это считаться ошибкой? < /Li>
Второй вопрос: что я должен делать? Написать пользовательский класс загрузчика? Исправьте это с помощью предварительной нагрузки «совместимых» классов в определенное время? В этом случае артефакты Maven с идентификаторами, заканчивающимися JDK18ON и LTS8ON, были явно смешаны вместе, и классы LTS18ON начали звонить в классы для JDK8ON. В настоящее время я не могу дать минимальный воспроизводимый пример. < /Li>
Внимание! Несмотря на то, что LTS18ON версия 2.73.7 "основана на BC 1,79", они не совместимы на 100%! < /Li>
Это не ошибка. Вы должны управлять своими зависимостями. Поскольку библиотеки должны использовать стабильный API (или интерфейс поставщика услуг для java.security.provider). Подход «Просто использовать новейший» должен работать.


Подробнее здесь: https://stackoverflow.com/questions/797 ... themselves

Вернуться в «JAVA»