104 oracle jdk-19 + spring-boot 打的 fatjar 不能使用 bouncycastle.bcprov

OracleJDK19与SpringBootfatjar的bouncycastle兼容性问题

前言

呵呵 这是某技术交流群里面暴露出的一个问题 

大致存在的情况是 oracle jdk19 执行 spring-boot 打包使用 bouncycastle.bcprov 的类库, 执行报错, 报错如下 

但是奇怪的是 直接执行该 主类, 是可以正常执行的 

另外 使用 openjdk19, 也是可以正常执行的 

master:~ jerry$ /Library/Java/JavaVirtualMachines/jdk-19.jdk/Contents/Home/bin/java -jar /Users/jerry/IdeaProjects/HelloSpringBoot/target/HelloSpringBoot-0.0.1.jar
Exception in thread "main" java.lang.reflect.InvocationTargetException
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:119)
	at java.base/java.lang.reflect.Method.invoke(Method.java:578)
	at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
	at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: java.security.NoSuchProviderException: JCE cannot authenticate the provider BC
	at java.base/javax.crypto.JceSecurity.getInstance(JceSecurity.java:131)
	at java.base/javax.crypto.KeyGenerator.getInstance(KeyGenerator.java:286)
	at com.hx.boot.Test23BcprovCodecNotFound.digest(Test23BcprovCodecNotFound.java:28)
	at com.hx.boot.Test23BcprovCodecNotFound.main(Test23BcprovCodecNotFound.java:24)
	at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
	... 5 more
Caused by: java.util.jar.JarException: The JCE Provider jar:file:/Users/jerry/IdeaProjects/HelloSpringBoot/target/HelloSpringBoot-0.0.1.jar!/BOOT-INF/lib/bcprov-jdk18on-1.71.jar!/ is not signed.
	at java.base/javax.crypto.JarVerifier.verifySingleJar(JarVerifier.java:464)
	at java.base/javax.crypto.JarVerifier.verifyJars(JarVerifier.java:317)
	at java.base/javax.crypto.JarVerifier.verify(JarVerifier.java:260)
	at java.base/javax.crypto.ProviderVerifier.verify(ProviderVerifier.java:130)
	at java.base/javax.crypto.JceSecurity.verifyProvider(JceSecurity.java:190)
	at java.base/javax.crypto.JceSecurity.getVerificationResult(JceSecurity.java:218)
	at java.base/javax.crypto.JceSecurity.getInstance(JceSecurity.java:128)
	... 9 more

 

该问题交流的上下文如下, 日期是 2022-10-11 

北京-哇咔咔  10:38:44
我有一个问题,jdk1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值