I have created a Gradle plugin where I use the new...
# gradle
a
I have created a Gradle plugin where I use the newest Ktor Client to download something in a task. I use
runBlocking
to start the coroutine scope and initiate the client. I include the latest Coroutines Core dependency in my Gradle plugin build script. When using this task in a target project I get the following error:
Copy code
A problem occurred configuring project ':examples:asset-mapper'.
> Could not create task ':examples:asset-mapper:downloadCDNAssets'.
   > kotlin/coroutines/jvm/internal/SpillingKt

....
Caused by: java.lang.NoClassDefFoundError: kotlin/coroutines/jvm/internal/SpillingKt
	at nl.helicotech.ktorize.jsdelivr.JsDelivrClient.packageMetadata(JsDelivrClient.kt:91)
	at nl.helicotech.ktorize.plugin.cdn.jsdelivr.JSDelivrDownloader$get$1.invokeSuspend(JSDelivrDownloader.kt:19)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
	at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:263)
	at kotlinx.coroutines.BlockingCoroutine.joinBlocking(Builders.kt:94)
	at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:70)
	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 nl.helicotech.ktorize.plugin.cdn.jsdelivr.JSDelivrDownloader.get(JSDelivrDownloader.kt:17)
	at nl.helicotech.ktorize.plugin.cdn.Downloaders.get(Downloader.kt:16)
	at nl.helicotech.ktorize.plugin.cdn.CDNPlugin.apply$lambda$3(CDNPlugin.kt:37)
	at nl.helicotech.ktorize.plugin.cdn.CDNPlugin.apply$lambda$4(CDNPlugin.kt:26)
	at org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:66)
	at org.gradle.api.internal.DefaultMutationGuard$1.execute(DefaultMutationGuard.java:66)
	at org.gradle.internal.code.DefaultUserCodeApplicationContext$CurrentApplication$1.execute(DefaultUserCodeApplicationContext.java:124)
	at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction$1.run(DefaultCollectionCallbackActionDecorator.java:110)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:30)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:27)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:67)
	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:60)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:167)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:60)
	at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:48)
	at org.gradle.api.internal.DefaultCollectionCallbackActionDecorator$BuildOperationEmittingAction.execute(DefaultCollectionCallbackActionDecorator.java:107)
	at org.gradle.internal.ImmutableActionSet$SetWithManyActions.execute(ImmutableActionSet.java:329)
	at org.gradle.api.internal.DefaultDomainObjectCollection.doAdd(DefaultDomainObjectCollection.java:280)
	at org.gradle.api.internal.DefaultNamedDomainObjectCollection.doAdd(DefaultNamedDomainObjectCollection.java:125)
	at org.gradle.api.internal.DefaultNamedDomainObjectCollection$AbstractDomainObjectCreatingProvider.tryCreate(DefaultNamedDomainObjectCollection.java:1008)
	... 154 more
Caused by: java.lang.ClassNotFoundException: kotlin.coroutines.jvm.internal.SpillingKt
	at org.gradle.internal.classloader.VisitableURLClassLoader$InstrumentingVisitableURLClassLoader.findClass(VisitableURLClassLoader.java:189)
	... 184 more
It can not find the SpillingKt class. I have no idea why this is but my guess is Kotlin version differences/requirements between what Gradle plugins support and what version I am on.
v
Quite possible. Gradle controls the execution environment. You might need to use versions compatible with your target Gradle version, or execute the code via
javaExec
from an injected
ExecOperations
.