Добрый день, пытаюсь работать с JCP, запуская сервис в докере. Собираю сервис в fat jar. До этого пытался разобраться с проблемой, ссылаясь на
эту тему. Возможно я что-то делаю не так, но это не работает у меня. Сама ошибка выглядит следующим образом:
Caused by: ru.CryptoPro.JCP.tools.SelfTesterException: [SelfTester-JCP] :: [ru.CryptoPro.JCP.tools.SelfTester_JCP] :: SelfTester Error: some test crashed twice in a row, usage of class ru.CryptoPro.JCP.tools.SelfTester_JCP is no longer available!
at ru.CryptoPro.JCP.tools.SelfTesterBase.checkInternal(Unknown Source)
at ru.CryptoPro.JCP.tools.SelfTester_JCP.check(Unknown Source)
at ru.CryptoPro.JCP.tools.SelfTester_JCP.check(Unknown Source)
at ru.CryptoPro.JCP.Digest.GostDigest.engineDigest(Unknown Source)
at java.base/java.security.MessageDigest.digest(MessageDigest.java:385)
at ru.CryptoPro.JCP.tools.JarChecker.a(Unknown Source)
at ru.CryptoPro.JCP.tools.JarChecker.a(Unknown Source)
at ru.CryptoPro.JCP.tools.JarChecker.c(Unknown Source)
at ru.CryptoPro.JCP.tools.JarChecker.checkJARSign(Unknown Source)
at ru.CryptoPro.JCP.tools.JarChecker.checkURLSign(Unknown Source)
at ru.CryptoPro.JCP.tools.cl_34.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
Caused by: ru.CryptoPro.JCP.tools.SelfTesterException: [pool-1-thread-1] :: [ru.CryptoPro.JCP.tools.SelfTester_JCP] :: null
at ru.CryptoPro.JCP.tools.SelfTesterBase.checkClassInternal(Unknown Source)
at ru.CryptoPro.JCP.tools.SelfTester_JCP.checkClass(Unknown Source)
at ru.CryptoPro.JCP.tools.Starter.checkInternal(Unknown Source)
at ru.CryptoPro.JCP.tools.Starter.check(Unknown Source)
at ru.CryptoPro.JCP.Sign.cl_0.<init>(Unknown Source)
at ru.CryptoPro.JCP.Sign.GostElSign.<init>(Unknown Source)
at ru.CryptoPro.JCP.Sign.GostElSign2012_256.<init>(Unknown Source)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at java.base/java.security.Provider.newInstanceUtil(Provider.java:154)
at java.base/java.security.Provider$Service.newInstance(Provider.java:1894)
Caused by: java.io.IOException: Digest of Jar file content is absent or invalid.Manifest file is corrupted
at ru.CryptoPro.JCP.tools.JarChecker.b(Unknown Source)
at ru.CryptoPro.JCP.tools.JarChecker.c(Unknown Source)
at ru.CryptoPro.JCP.tools.JarChecker.checkJARSign(Unknown Source)
Fat jar собирается так:
jar {
manifest {
attributes(
'Main-Class': 'SomeMainClass'
)
}
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
duplicatesStrategy = DuplicatesStrategy.INCLUDE
}
При этом jar файлы импортируется следующим образом:
implementation files('libs/jcp/JCP.jar')Основной вопрос в том, как это исправить и импортировать jar файлы JCP в fat jar целиком?
Дополнение: Ещё немного разобравшись обнаружил, что у меня отсутствуют некоторые файлы подписи jar-файла JCP в итоговой сборке в папке META-INF, функции include '*.RSA' и т.п. не помогают их добавить туда
Отредактировано пользователем 9 декабря 2022 г. 17:53:11(UTC)
| Причина: Не указана