' java.security.nosuchalgorithmexception:sha messagedigest不可用'在管道中运行Gradle测试时

发布于 2025-01-31 19:11:13 字数 7794 浏览 4 评论 0原文

运行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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文