Skip to content

S3Client error java.lang.NoClassDefFoundError: kotlin/coroutines/jvm/internal/SpillingKt with 1.5.0+ #1654

@afranken

Description

@afranken

Describe the bug

We have a test
https://github.com/adobe/S3Mock/blob/main/integration-tests/src/test/kotlin/com/adobe/testing/s3mock/its/KotlinSDKIT.kt#L36

That works just fine with aws-sdk-kotlin 1.4.125
When updating to 1.5.0, we see an error:

[ERROR] com.adobe.testing.s3mock.its.KotlinSDKIT.createAndDeleteBucket(TestInfo) -- Time elapsed: 0.032 s <<< ERROR!
java.lang.NoClassDefFoundError: kotlin/coroutines/jvm/internal/SpillingKt
        at aws.smithy.kotlin.runtime.http.operation.SdkHttpOperationKt.execute(SdkHttpOperation.kt:119)
        at aws.smithy.kotlin.runtime.http.operation.SdkHttpOperationKt.roundTrip(SdkHttpOperation.kt:96)
        at aws.sdk.kotlin.services.s3.DefaultS3Client.createBucket(DefaultS3Client.kt:402)
        at com.adobe.testing.s3mock.its.KotlinSDKIT$createAndDeleteBucket$1.invokeSuspend(KotlinSDKIT.kt:38)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
        at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:277)
        at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:95)
        at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:69)
        at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
        at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking$default(Builders.kt:48)
        at kotlinx.coroutines.BuildersKt.runBlocking$default(Unknown Source)
        at com.adobe.testing.s3mock.its.KotlinSDKIT.createAndDeleteBucket(KotlinSDKIT.kt:36)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
Caused by: java.lang.ClassNotFoundException: kotlin.coroutines.jvm.internal.SpillingKt
        ... 16 more

Not sure where this class is supposed to come from, it does not seem to be part of the Kotlin Coroutines library.

Simple code like

S3Client.fromEnvironment { region = "us-east-2" }.use {
      it.listBuckets()
    }

Throws the same error in our setup.

Regression Issue

  • Select this option if this issue appears to be a regression.

Expected behavior

The code should run without an exception.

Current behavior

See description

Steps to Reproduce

Clone https://github.com/adobe/S3Mock
Update aws-sdk-kotlin version to 1.5.0+ in the main pom.xml
run make (starts a maven build, Docker is needed.)

Just running the test will throw the same error.
https://github.com/adobe/S3Mock/blob/main/integration-tests/src/test/kotlin/com/adobe/testing/s3mock/its/KotlinSDKIT.kt#L36

Possible Solution

No response

Context

No response

AWS SDK for Kotlin version

1.5.3

Platform (JVM/JS/Native)

JVM

Operating system and version

MacOS 15.5

Metadata

Metadata

Assignees

No one assigned

    Labels

    guidanceQuestion that needs advice or information.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions