beryx / badass-jlink-plugin

Create a custom runtime image of your modular application
https://badass-jlink-plugin.beryx.org
Apache License 2.0
387 stars 27 forks source link

Merged module does not declare uses #209

Closed jasin closed 1 year ago

jasin commented 2 years ago

I am trying to use jpackage to create an executible for windows. I've sorted through a lot of the issues, but I can't seem to get past this one. I'm not really sure what the error means and how I can go about diagnosing the problem. Any help would be appreciated

Exception in Application stop method
Feb 23, 2022 7:36:32 AM tornadofx.DefaultErrorHandler uncaughtException
SEVERE: Uncaught error
java.lang.RuntimeException: Exception in Application start method
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
        at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
        at java.base/java.lang.Thread.run(Thread.java:831)
Caused by: java.util.ServiceConfigurationError: kotlin.reflect.jvm.internal.impl.resolve.ExternalOverridabilityCondition: module com.jasin.merged.module does not declare `uses`
        at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:589)
        at java.base/java.util.ServiceLoader.checkCaller(ServiceLoader.java:575)
        at java.base/java.util.ServiceLoader.<init>(ServiceLoader.java:504)
        at java.base/java.util.ServiceLoader.load(ServiceLoader.java:1643)
        at com.jasin.merged.module@0.0.1/kotlin.reflect.jvm.internal.impl.resolve.OverridingUtil.<clinit>(OverridingUtil.java:45)
        at com.jasin.merged.module@0.0.1/kotlin.reflect.jvm.internal.impl.types.checker.NewKotlinTypeCheckerImpl.<init>

My merged module block contains

mergedModule {
        additive = true
        requires("jdk.crypto.cryptoki") // required or i get ssl errors
    }

The only other issue I have when running jpackageImage task is

Cannot derive uses clause from service loader invocation in: kotlin/reflect/jvm/internal/impl/builtins/BuiltInsLoader$Companion$Instance$2.invoke().
Cannot derive uses clause from service loader invocation in: kotlin/reflect/jvm/internal/impl/descriptors/DescriptorVisibilities.<clinit>().
Cannot derive uses clause from service loader invocation in: kotlin/reflect/jvm/internal/impl/resolve/OverridingUtil.<clinit>().
airsquared commented 1 year ago

Add uses("kotlin.reflect.jvm.internal.impl.resolve.ExternalOverridabilityCondition") in the mergedModule block.