' java.security.nosuchalgorithmexception:sha messagedigest不可用'在管道中运行Gradle测试时
运行Gradle测试时,我的管道中遇到了奇怪的错误。首先,它似乎与Bytebuddy相结合,造成了这个问题,但是再看一下,基本错误与无法使用的SHA-1算法有关:
java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null)
at app//org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:88)
at app/jdk.proxy3/jdk.proxy3.$Proxy23.isTypeMockable(Unknown Source)
at app//org.mockito.internal.util.MockUtil.typeMockabilityOf(MockUtil.java:33)
at app//org.mockito.internal.util.MockCreationValidator.validateType(MockCreationValidator.java:22)
at app//org.mockito.internal.creation.MockSettingsImpl.validatedSettings(MockSettingsImpl.java:250)
at app//org.mockito.internal.creation.MockSettingsImpl.build(MockSettingsImpl.java:232)
at app//org.mockito.internal.MockitoCore.mock(MockitoCore.java:94)
at app//org.mockito.Mockito.mock(Mockito.java:1965)
at app//{redacted}.my test method(MyTest.kt:1915)
Caused by:
java.lang.IllegalStateException: Failed to load interface org.mockito.plugins.MockMaker implementation declared in java.lang.CompoundEnumeration@6d303498
at app//org.mockito.internal.configuration.plugins.PluginInitializer.loadImpl(PluginInitializer.java:58)
at app//org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:69)
at app//org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:54)
at app//org.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:28)
at app//org.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:22)
at app//org.mockito.internal.MockitoCore.<clinit>(MockitoCore.java:77)
at app//org.mockito.Mockito.<clinit>(Mockito.java:1614)
at app//org.mockito.kotlin.MockingKt.withSettings(Mocking.kt:166)
at app//{redacted}.my test method(MyTest.kt:1915)
Caused by:
java.lang.reflect.InvocationTargetException
at [email protected]/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at [email protected]/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at [email protected]/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at [email protected]/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at [email protected]/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at app//org.mockito.internal.configuration.plugins.PluginInitializer.loadImpl(PluginInitializer.java:53)
... 8 more
Caused by:
org.mockito.exceptions.base.MockitoInitializationException:
Could not initialize inline Byte Buddy mock maker.
It appears as if your JDK does not supply a working agent attachment mechanism.
Java : 17
JVM vendor name : Eclipse Adoptium
JVM vendor version : 17.0.3+7
JVM name : OpenJDK 64-Bit Server VM
JVM version : 17.0.3+7
JVM info : mixed mode, sharing
OS name : Linux
OS version : 5.4.109+
at app//org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<init>(InlineDelegateByteBuddyMockMaker.java:244)
at app//org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<init>(InlineByteBuddyMockMaker.java:23)
... 14 more
Caused by:
java.lang.InternalError: internal error: SHA-1 not available.
at [email protected]/sun.security.provider.SecureRandom.init(SecureRandom.java:114)
at [email protected]/sun.security.provider.SecureRandom.<init>(SecureRandom.java:85)
at [email protected]/java.security.SecureRandom.getDefaultPRNG(SecureRandom.java:291)
at [email protected]/java.security.SecureRandom.<init>(SecureRandom.java:225)
at [email protected]/java.io.File$TempDirectory.<clinit>(File.java:1994)
at [email protected]/java.io.File.createTempFile(File.java:2151)
at [email protected]/java.io.File.createTempFile(File.java:2216)
at app//org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<clinit>(InlineDelegateByteBuddyMockMaker.java:123)
... 15 more
Caused by:
java.security.NoSuchAlgorithmException: SHA MessageDigest not available
at [email protected]/sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
at [email protected]/java.security.MessageDigest.getInstance(MessageDigest.java:185)
at [email protected]/sun.security.provider.SecureRandom.init(SecureRandom.java:112)
... 22 more
我只是在Gitlab Pipeline中遇到此错误;它不会在本地失败。我的管道使用以下配置:
gradle:test:
image: eclipse-temurin:17-jdk-alpine
before_script:
- sh -c 'apk update && apk add libx11'
stage: validate
allow_failure: false
script: sh -c './gradlew clean test --info'
在本地,我正在使用以下Java版本:
openjdk 17.0.2 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)
我似乎找不到与Internet上此问题有关的任何内容。据我所知,Java不知道SHA-1是一个大问题。
欢迎可能导致我的问题的任何建议。
I've been getting odd errors in my pipeline when running Gradle tests. First it appeared as though Mockito combined with ByteBuddy caused the issue, but looking into it a bit more, the underlying error has to do with the SHA-1 algorithm not being available:
java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null)
at app//org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:88)
at app/jdk.proxy3/jdk.proxy3.$Proxy23.isTypeMockable(Unknown Source)
at app//org.mockito.internal.util.MockUtil.typeMockabilityOf(MockUtil.java:33)
at app//org.mockito.internal.util.MockCreationValidator.validateType(MockCreationValidator.java:22)
at app//org.mockito.internal.creation.MockSettingsImpl.validatedSettings(MockSettingsImpl.java:250)
at app//org.mockito.internal.creation.MockSettingsImpl.build(MockSettingsImpl.java:232)
at app//org.mockito.internal.MockitoCore.mock(MockitoCore.java:94)
at app//org.mockito.Mockito.mock(Mockito.java:1965)
at app//{redacted}.my test method(MyTest.kt:1915)
Caused by:
java.lang.IllegalStateException: Failed to load interface org.mockito.plugins.MockMaker implementation declared in java.lang.CompoundEnumeration@6d303498
at app//org.mockito.internal.configuration.plugins.PluginInitializer.loadImpl(PluginInitializer.java:58)
at app//org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:69)
at app//org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:54)
at app//org.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:28)
at app//org.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:22)
at app//org.mockito.internal.MockitoCore.<clinit>(MockitoCore.java:77)
at app//org.mockito.Mockito.<clinit>(Mockito.java:1614)
at app//org.mockito.kotlin.MockingKt.withSettings(Mocking.kt:166)
at app//{redacted}.my test method(MyTest.kt:1915)
Caused by:
java.lang.reflect.InvocationTargetException
at [email protected]/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at [email protected]/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
at [email protected]/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at [email protected]/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
at [email protected]/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
at app//org.mockito.internal.configuration.plugins.PluginInitializer.loadImpl(PluginInitializer.java:53)
... 8 more
Caused by:
org.mockito.exceptions.base.MockitoInitializationException:
Could not initialize inline Byte Buddy mock maker.
It appears as if your JDK does not supply a working agent attachment mechanism.
Java : 17
JVM vendor name : Eclipse Adoptium
JVM vendor version : 17.0.3+7
JVM name : OpenJDK 64-Bit Server VM
JVM version : 17.0.3+7
JVM info : mixed mode, sharing
OS name : Linux
OS version : 5.4.109+
at app//org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<init>(InlineDelegateByteBuddyMockMaker.java:244)
at app//org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<init>(InlineByteBuddyMockMaker.java:23)
... 14 more
Caused by:
java.lang.InternalError: internal error: SHA-1 not available.
at [email protected]/sun.security.provider.SecureRandom.init(SecureRandom.java:114)
at [email protected]/sun.security.provider.SecureRandom.<init>(SecureRandom.java:85)
at [email protected]/java.security.SecureRandom.getDefaultPRNG(SecureRandom.java:291)
at [email protected]/java.security.SecureRandom.<init>(SecureRandom.java:225)
at [email protected]/java.io.File$TempDirectory.<clinit>(File.java:1994)
at [email protected]/java.io.File.createTempFile(File.java:2151)
at [email protected]/java.io.File.createTempFile(File.java:2216)
at app//org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.<clinit>(InlineDelegateByteBuddyMockMaker.java:123)
... 15 more
Caused by:
java.security.NoSuchAlgorithmException: SHA MessageDigest not available
at [email protected]/sun.security.jca.GetInstance.getInstance(GetInstance.java:159)
at [email protected]/java.security.MessageDigest.getInstance(MessageDigest.java:185)
at [email protected]/sun.security.provider.SecureRandom.init(SecureRandom.java:112)
... 22 more
I'm only getting this error in my Gitlab pipeline; it doesn't fail locally. My pipeline uses the following configuration:
gradle:test:
image: eclipse-temurin:17-jdk-alpine
before_script:
- sh -c 'apk update && apk add libx11'
stage: validate
allow_failure: false
script: sh -c './gradlew clean test --info'
Locally, I'm using the following Java version:
openjdk 17.0.2 2022-01-18
OpenJDK Runtime Environment (build 17.0.2+8-86)
OpenJDK 64-Bit Server VM (build 17.0.2+8-86, mixed mode, sharing)
I cannot seem to find anything that relates to this question on the internet. To my knowledge, Java not knowing SHA-1 is a big problem.
Any suggestions on what might cause my issues are welcome.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论