Поставщик безопасности Bouncy Castle не загружается под Java 11/12 - PullRequest
3 голосов
/ 31 марта 2019

Я пытаюсь сделать что-то, что должно быть тривиально, но есть проблема, с которой я сталкиваюсь.

Поставщик безопасности надувного замка не будет загружаться при миграции приложения JavaFx с Java 8 на Java 11 (пробовал также и Java 12, те же результаты). Это проект Maven, который я обновил для использования плагинов, совместимых с Java 11. Компилируется нормально, но при запуске я получаю это в окне терминала:

банка. Лаунчер java.lang.reflect.InvocationTargetException at java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Метод) в java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) в java.base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.base / java.lang.reflect.Method.invoke (Method.java:567) в javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464) в javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363) в java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Метод) в java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) в java.base / jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.base / java.lang.reflect.Method.invoke (Method.java:567) в java.base / sun.launcher.LauncherHelper $ FXHelper.main (LauncherHelper.java:1051) Blockquote Причина: java.lang.NoClassDefFoundError: org / bouncycastle / jce / provider / BouncyCastleProvider at .Launcher.main (Launcher.java:14) ... Еще 11 причин: java.lang.ClassNotFoundException: org.bouncycastle.jce.provider.BouncyCastleProvider at java.base / jdk.internal.loader.BuiltinClassLoader.loadClass (BuiltinClassLoader.java:583) в java.base / jdk.internal.loader.ClassLoaders $ AppClassLoader.loadClass (ClassLoaders.java:178) в java.base / java.lang.ClassLoader.loadClass (ClassLoader.java:521) ... еще 12

В моем java.security провайдером надувных замков в качестве первого провайдера (также пробовал его в качестве последнего провайдера, но результаты те же)

#
# List of providers and their preference orders (see above):
#
security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider
security.provider.2=SUN
security.provider.3=SunRsaSign
security.provider.4=SunEC
security.provider.5=SunJSSE
security.provider.6=SunJCE
security.provider.7=SunJGSS
security.provider.8=SunSASL
security.provider.9=XMLDSig
security.provider.10=SunPCSC
security.provider.11=JdkLDAP
security.provider.10=JdkSASL
security.provider.11=Apple
security.provider.12=SunPKCS11

И в моем коде есть следующее (которое работало нормально, когда я тестировал обновление с java 8 до 9 или 10 в прошлом):

            //Since Java 9 we set the unlimited crypto policy in code, not by applying the JCE jars.
            Security.setProperty("crypto.policy", "unlimited");
            //verify that JCE is applied

            // init the BC security provider
            if (Security.getProvider("BC") == null) {
                Security.insertProviderAt(new BouncyCastleProvider(), 0);
                logger.info("Security provider added successfully");
            }

Банки с надувным замком: bcprov-jdk15on-1.61 (версия для провайдера надувного замка 1.61) и bcpkix-jdk15on-1.61.jar. Проживать в нужном месте.

командная строка, которую я использую для запуска приложения JavaFx:

java -cp lib - моды-пути-моды --add-модулей = javafx.controls, javafx.fxml, javafx.graphics, javafx.web, javafx.swing -jar .Launcher И гарантированно, что моды и библиотеки находятся в нужном месте и доступны банке.

Я видел несколько проблем в StackOverflow.com, которые похожи на эту, но попробовал предлагаемые решения, но они не решили проблему.

Есть идеи, почему провайдер Bouncy Castle не загружается и как его решить?

...