运行Java代码时,遇到parseAlgParameters failed: PBE AlgorithmParameters not available
java.io.IOException: parseAlgParameters failed: PBE AlgorithmParameters not available
at sun.security.pkcs12.PKCS12KeyStore.parseAlgParameters(PKCS12KeyStore.java:836)
at sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:2042)
at java.security.KeyStore.load(KeyStore.java:1445)
at com.cipherxx.utils.HttpsClientUtils.createHttpsClient(HttpsClientUtils.java:148)
at com.cipherxx.utils.HttpsClientUtils.doPost(HttpsClientUtils.java:291)
at com.cipherxx.server.Login.getToken(Login.java:53)
at com.cipherxx.SDKTest.getSDK(SDKTest.java:162)
at com.cipherxx.SDKTest.main(SDKTest.java:41)
Caused by: java.security.NoSuchAlgorithmException: PBE AlgorithmParameters not available
at sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
at java.security.Security.getImpl(Security.java:695)
at java.security.AlgorithmParameters.getInstance(AlgorithmParameters.java:146)
at sun.security.pkcs12.PKCS12KeyStore.parseAlgParameters(PKCS12KeyStore.java:830)
... 7 more
2022-04-24 18:42:19 [ERROR] com.cipherxx.utils.HttpsClientUtils - java.io.IOException: parseAlgParameters failed: PBE AlgorithmParameters not available
2022-04-24 18:42:19 [ERROR] com.cipherxx.utils.HttpsClientUtils - java.lang.NullPointerException
Exception in thread "main" java.lang.NullPointerException
at com.cipherxx.server.Login.getToken(Login.java:54)
at com.cipherxx.SDKTest.getSDK(SDKTest.java:162)
at com.cipherxx.SDKTest.main(SDKTest.java:41)
底层原因是:没有加载到JAVA扩展目录的类库。
排查没有加载的JAVA扩展目录的类库的哪些操作导致?
1、排查"这台机器上有没有配置Java环境变量或没有配置JAVA_HOME?"
2、排查“是不是运行时没有指定-Djava.ext.dirs=?”
我这次遇到的是:
$ java -Djava.ext.dirs=/opt/ca/lib/:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/ext -jar clientPerfTest-1.1-SNAPSHOT-jar-with-dependencies.jar
排查原因:
已指定了-Djava.ext.dirs=,但运行的这台机器忘记配置JAVA_HOME
,还有没有配置JAVA扩展目录的类库的依赖包路径
解决方法:
1、java -version 看下是否有java环境,安装java并配置环境变量
2、如果java环境有,也已指定了-Djava.ext.dirs=,但没有加上:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/ext
备注:在linux下用:分割,在Windows下用;分割