java 无法初始化类sun.security.jca.ProviderConfig$ProviderLoader

luaexgnf  于 2023-02-18  发布在  Java
关注(0)|答案(3)|浏览(333)

Springboot偶尔会出现以下错误:
原因:java. lang. NoClassDefFoundError:无法初始化类sun. security. jca. ProviderConfig $ProviderLoader

at java.base/sun.security.jca.ProviderConfig$3.run(ProviderConfig.java:244)

at java.base/sun.security.jca.ProviderConfig$3.run(ProviderConfig.java:238)

at java.base/java.security.AccessController.doPrivileged(Native Method)

at java.base/sun.security.jca.ProviderConfig.doLoadProvider(ProviderConfig.java:238)

at java.base/sun.security.jca.ProviderConfig.getProvider(ProviderConfig.java:218)

at java.base/sun.security.jca.ProviderList.getProvider(ProviderList.java:266)

at java.base/sun.security.jca.ProviderList$ServiceList.tryGet(ProviderList.java:511)

at java.base/sun.security.jca.ProviderList$ServiceList$1.hasNext(ProviderList.java:565)

at java.base/javax.crypto.SecretKeyFactory.nextSpi(SecretKeyFactory.java:301)

at java.base/javax.crypto.SecretKeyFactory.<init>(SecretKeyFactory.java:121)

at java.base/javax.crypto.SecretKeyFactory.getInstance(SecretKeyFactory.java:168)

at com.kingbase8.shaded.com.ongres.scram.common.ScramMechanisms.saltedPassword(ScramMechanisms.java:155)

at com.kingbase8.shaded.com.ongres.scram.common.ScramFunctions.saltedPassword(ScramFunctions.java:59)

at com.kingbase8.shaded.com.ongres.scram.client.ScramSession$ClientFinalProcessor.<init>(ScramSession.java:196)

at com.kingbase8.shaded.com.ongres.scram.client.ScramSession$ClientFinalProcessor.<init>(ScramSession.java:163)

at com.kingbase8.shaded.com.ongres.scram.client.ScramSession$ServerFirstProcessor.clientFinalProcessor(ScramSession.java:130)

JDK信息如下:
enter image description here

mwecs4sa

mwecs4sa1#

啊,请您试着查找一下日志,有可能以前发生过ExceptionInInitializerError,所以这次JVM直接抛出NoClassDefFoundError,因为上次失败了。
需要获取原始ExceptionInInitializerError的调用堆栈(如果存在)才能修复此问题。
相关代码和链接

  • https://github.com/openjdk/jdk11u/blob/jdk-11+28/src/java.base/share/classes/sun/security/jca/ProviderConfig.java#L308-类ProviderConfig$ProviderLoader是在OpenJDK 11内部定义的,因此不太可能是Java classpath问题
  • https://stackoverflow.com/a/5756989/2412606-请在此处查看NoClassDefFoundError的定义。感谢@oldpeculier和@jared
ercv8c1e

ercv8c1e2#

对于这个问题不太清楚为什么会发生。为了解决这个问题。我们可以手动使用安全。addSecurity方法再次加载jca或类似的组件。像BouncyCastle。现在它为我工作得很好。

kgsdhlau

kgsdhlau3#

我使用的是Java11,而项目是使用Java1.8构建的。一旦我切换到Java1.8,它就可以正常工作了

相关问题