Нам нужно развернуть автономный jar в IBM AIX 6.1. Этот jar пытается подключиться к SFTP-серверу, используя hierynomus sshj и bouncycastle. При попытке создать экземпляр KeyAgreement во время выполнения выдает следующее:
Exception in thread "main" java.lang.ExceptionInInitializerError
at java.lang.J9VMInternals.initialize(J9VMInternals.java:222)
at java.lang.Class.forNameImpl(Native Method)
at java.lang.Class.forName(Class.java:172)
at java.security.Provider$Service$1.run(Provider.java:831)
at java.security.Provider$Service$1.run(Provider.java:823)
at java.security.AccessController.doPrivileged(AccessController.java:202)
at java.security.Provider$Service.newInstance(Provider.java:821)
at java.security.SecureRandom.<init>(SecureRandom.java:114)
at javax.crypto.b.<clinit>(Unknown Source)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
at javax.crypto.KeyAgreement.getInstance(Unknown Source)
at net.schmizz.sshj.common.SecurityUtils.registerSecurityProvider(SecurityUtils.java:88)
at net.schmizz.sshj.common.SecurityUtils.register(SecurityUtils.java:267)
at net.schmizz.sshj.common.SecurityUtils.isBouncyCastleRegistered(SecurityUtils.java:245)
at net.schmizz.sshj.DefaultConfig.<init>(DefaultConfig.java:78)
at net.schmizz.sshj.SSHClient.<init>(SSHClient.java:135)
at com.dxc.seat.eai.EailSftpClient.getConnection(EailSftpClient.java:312)
at com.dxc.seat.eai.EailSftpClient.startProcess(EailSftpClient.java:200)
at com.dxc.seat.eai.SFTPFileInput.main(SFTPFileInput.java:17)
Caused by: java.lang.NullPointerException
at org.bouncycastle.jcajce.provider.drbg.DRBG$NonceAndIV.engineGenerateSeed(Unknown Source)
at java.security.SecureRandom.generateSeed(SecureRandom.java:343)
at org.bouncycastle.jcajce.provider.drbg.DRBG$HybridSecureRandom.<init>(Unknown Source)
at org.bouncycastle.jcajce.provider.drbg.DRBG.createBaseRandom(Unknown Source)
at org.bouncycastle.jcajce.provider.drbg.DRBG.access$200(Unknown Source)
at org.bouncycastle.jcajce.provider.drbg.DRBG$Default.<clinit>(Unknown Source)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
... 19 more
JVM, используемая для запуска этой банки:
java version "1.6.0"
Java(TM) SE Runtime Environment (build pap6460sr9fp1ifix-20110511(SR9 P1+IZ97552))
IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 AIX ppc64-64 jvmap6460sr9-20110203_74623 (JIT enabled, AOT enabled)
J9VM - 20110203_074623
JIT - r9_20101028_17488ifx3
GC - 20101027_AA)
JCL - 20110203_01
Параметры безопасности JVM были обновлены, добавив нового поставщика безопасности в конец списка поставщиков на java.security и добавив библиотеки:
bcpkix-jdk15on-1.60.jar
bcprov-jdk15on-1.60.jar в каталог ext.
Автономная банка была создана с использованием плагина maven-assembly-plugin.
Интересно, почему это происходит и как мы могли это исправить.