Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kotlin Multiplatform (1.6.21) and native image fails with NoClassDefFoundError: kotlin.jvm.internal.Intrinsics #4818

Closed
yschimke opened this issue Aug 14, 2022 · 2 comments

Comments

@yschimke
Copy link

Describe the issue

Fails when running with

Exception in thread "main" java.lang.NoClassDefFoundError: kotlin.jvm.internal.Intrinsics
        at okhttp3.curl.MainCommandLineKt.main(MainCommandLine.kt)

Steps to reproduce the issue

PR at square/okhttp#7416

./ gradlew okcurl:nativeImage
okcurl/build/graal/okcurl

Describe GraalVM and your environment:

  • GraalVM version: 22.2.0 and also 22.3.0-dev-20220812_2138
  • JDK major version: [e.g.:8] 11 and 17
  • OS: [e.g. macOS Catalina] OSX
  • Architecture: [e.g.: AMD64] AMD64

More details

Task :okcurl:nativeImage
Apply jar:file:///Users/yschimke/IdeaProjects/okhttp/okcurl/build/libs/okcurl-5.0.0-SNAPSHOT.jar!/META-INF/native-image/okhttp3/okcurl/reflect-config.json
Apply jar:file:///Users/yschimke/IdeaProjects/okhttp/okcurl/build/libs/okcurl-5.0.0-SNAPSHOT.jar!/META-INF/native-image/okhttp3/okcurl/resource-config.json
Executing [
/Users/yschimke/.gradle/caches/com.palantir.graal/22.2.0/17/graalvm-ce-java17-22.2.0/Contents/Home/bin/java
-XX:+UseParallelGC
-XX:+UnlockExperimentalVMOptions
-XX:+EnableJVMCI
-Dtruffle.TrustAllTruffleRuntimeProviders=true
-Dtruffle.TruffleRuntime=com.oracle.truffle.api.impl.DefaultTruffleRuntime
-Dgraalvm.ForcePolyglotInvalid=true
-Dgraalvm.locatorDisabled=true
-Dsubstratevm.IgnoreGraalVersionCheck=true
--add-exports=java.base/com.sun.crypto.provider=org.graalvm.nativeimage.builder
--add-exports=java.base/jdk.internal.access.foreign=org.graalvm.nativeimage.builder
--add-exports=java.base/jdk.internal.event=org.graalvm.nativeimage.builder
--add-exports=java.base/jdk.internal.loader=org.graalvm.nativeimage.builder,org.graalvm.truffle
--add-exports=java.base/jdk.internal.logger=org.graalvm.nativeimage.builder
--add-exports=java.base/jdk.internal.misc=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile
--add-exports=java.base/jdk.internal.module=jdk.internal.vm.compiler,org.graalvm.nativeimage.base,org.graalvm.nativeimage.builder
--add-exports=java.base/jdk.internal.org.objectweb.asm=org.graalvm.nativeimage.builder
--add-exports=java.base/jdk.internal.perf=org.graalvm.nativeimage.builder
--add-exports=java.base/jdk.internal.platform=org.graalvm.nativeimage.builder
--add-exports=java.base/jdk.internal.ref=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile
--add-exports=java.base/jdk.internal.reflect=org.graalvm.nativeimage.builder
--add-exports=java.base/jdk.internal.util=org.graalvm.nativeimage.builder
--add-exports=java.base/jdk.internal.vm.annotation=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.invoke.util=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.net=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.nio.ch=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile
--add-exports=java.base/sun.reflect.annotation=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.reflect.generics.factory=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.reflect.generics.reflectiveObjects=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.reflect.generics.repository=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.reflect.generics.scope=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.reflect.generics.tree=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.security.jca=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.security.provider=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.security.ssl=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.security.util=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.security.x509=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.text.spi=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.util.calendar=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.util.cldr=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.util.locale.provider=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.util.locale=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.util.resources=org.graalvm.nativeimage.builder
--add-exports=java.base/sun.util=org.graalvm.nativeimage.builder
--add-exports=java.desktop/sun.java2d.pipe=org.graalvm.nativeimage.builder
--add-exports=java.desktop/sun.java2d=org.graalvm.nativeimage.builder
--add-exports=java.management/com.sun.jmx.mbeanserver=org.graalvm.nativeimage.builder
--add-exports=java.management/sun.management=org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto
--add-exports=java.xml.crypto/org.jcp.xml.dsig.internal.dom=org.graalvm.nativeimage.builder
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.aarch64=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.amd64=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.site=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code.stack=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.code=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile,org.graalvm.nativeimage.pointsto
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.common=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.aarch64=jdk.internal.vm.compiler
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.amd64=jdk.internal.vm.compiler
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot.riscv64=jdk.internal.vm.compiler
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.hotspot=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.meta=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.objectfile,org.graalvm.nativeimage.pointsto
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.riscv64=jdk.internal.vm.compiler
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.runtime=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder,org.graalvm.nativeimage.pointsto
--add-exports=jdk.internal.vm.ci/jdk.vm.ci.services=jdk.internal.vm.compiler,org.graalvm.nativeimage.builder
--add-exports=jdk.jfr/jdk.jfr.events=org.graalvm.nativeimage.builder
--add-exports=jdk.jfr/jdk.jfr.internal.handlers=org.graalvm.nativeimage.builder
--add-exports=jdk.jfr/jdk.jfr.internal.jfc=org.graalvm.nativeimage.builder
--add-exports=jdk.jfr/jdk.jfr.internal=org.graalvm.nativeimage.builder
--add-exports=jdk.management/com.sun.management.internal=org.graalvm.nativeimage.builder
-XX:+UseJVMCINativeLibrary
-Xss10m
-Xms1g
-Xmx14g
-Djava.awt.headless=true
-Dorg.graalvm.version=22.3.0-dev
-Dcom.oracle.graalvm.isaot=true
-Djava.system.class.loader=com.oracle.svm.hosted.NativeImageSystemClassLoader
-Xshare:off
-Djdk.internal.lambda.disableEagerInitialization=true
-Djdk.internal.lambda.eagerlyInitialize=false
-Djava.lang.invoke.InnerClassLambdaMetafactory.initializeLambdas=false
-javaagent:/Users/yschimke/.gradle/caches/com.palantir.graal/22.2.0/17/graalvm-ce-java17-22.2.0/Contents/Home/lib/svm/builder/svm.jar
--add-modules=ALL-DEFAULT
--module-path
/Users/yschimke/.gradle/caches/com.palantir.graal/22.2.0/17/graalvm-ce-java17-22.2.0/Contents/Home/lib/truffle/truffle-api.jar:/Users/yschimke/.gradle/caches/com.palantir.graal/22.2.0/17/graalvm-ce-java17-22.2.0/Contents/Home/lib/svm/builder/svm.jar:/Users/yschimke/.gradle/caches/com.palantir.graal/22.2.0/17/graalvm-ce-java17-22.2.0/Contents/Home/lib/svm/builder/native-image-base.jar:/Users/yschimke/.gradle/caches/com.palantir.graal/22.2.0/17/graalvm-ce-java17-22.2.0/Contents/Home/lib/svm/builder/objectfile.jar:/Users/yschimke/.gradle/caches/com.palantir.graal/22.2.0/17/graalvm-ce-java17-22.2.0/Contents/Home/lib/svm/builder/pointsto.jar
--module
org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner
-imagecp
/Users/yschimke/IdeaProjects/okhttp/okcurl/build/libs/okcurl-5.0.0-SNAPSHOT.jar
-imagemp
/Users/yschimke/.gradle/caches/com.palantir.graal/22.2.0/17/graalvm-ce-java17-22.2.0/Contents/Home/lib/svm/library-support.jar
-H:CLibraryPath=/Users/yschimke/.gradle/caches/com.palantir.graal/22.2.0/17/graalvm-ce-java17-22.2.0/Contents/Home/lib/svm/clibraries/darwin-aarch64
-H:Path=/Users/yschimke/IdeaProjects/okhttp/okcurl
'-H:ReflectionConfigurationResources@jar:file:///Users/yschimke/IdeaProjects/okhttp/okcurl/build/libs/okcurl-5.0.0-SNAPSHOT.jar!/META-INF/native-image/okhttp3/okcurl/reflect-config.json=META-INF/native-image/okhttp3/okcurl/reflect-config.json'
'-H:ResourceConfigurationResources@jar:file:///Users/yschimke/IdeaProjects/okhttp/okcurl/build/libs/okcurl-5.0.0-SNAPSHOT.jar!/META-INF/native-image/okhttp3/okcurl/resource-config.json=META-INF/native-image/okhttp3/okcurl/resource-config.json'
-H:Path=/Users/yschimke/IdeaProjects/okhttp/okcurl/build/graal
-H:FallbackThreshold=0
-H:+DumpTargetInfo
-H:Name=okcurl
'-H:Class@explicit main-class=okhttp3.curl.MainCommandLineKt'
]
========================================================================================================================
GraalVM Native Image: Generating 'okcurl' (executable)...
========================================================================================================================
[1/7] Initializing... (2.8s @ 0.08GB)
Version info: 'GraalVM 22.3.0-dev Java 17 CE'
Java version info: '17.0.4+7-jvmci-22.3-b02'
C compiler: cc (apple, arm64, 13.0.0)
Garbage collector: Serial GC

Printing compilation-target information to: /Users/yschimke/IdeaProjects/okhttp/okcurl/build/graal/reports/target_info_20220814_124733.txt

Printing native-library information to: /Users/yschimke/IdeaProjects/okhttp/okcurl/build/graal/reports/native_library_info_20220814_124737.txt

[2/7] Performing analysis... [*] (3.9s @ 0.33GB)
2,844 (74.20%) of 3,833 classes reachable
3,412 (51.62%) of 6,610 fields reachable
12,448 (43.15%) of 28,845 methods reachable
34 classes, 0 fields, and 323 methods registered for reflection
58 classes, 59 fields, and 52 methods registered for JNI access
4 native libraries: -framework Foundation, dl, pthread, z
[3/7] Building universe... (0.7s @ 0.82GB)
[4/7] Parsing methods... [] (0.5s @ 1.44GB)
[5/7] Inlining methods... [
] (0.3s @ 0.29GB)
[6/7] Compiling methods... [
] (2.4s @ 1.10GB)
[7/7] Creating image... (1.1s @ 1.54GB)
4.15MB (36.36%) for code area: 7,139 compilation units
6.94MB (60.75%) for image heap: 98,973 objects and 5 resources
337.88KB ( 2.89%) for other data
11.42MB in total

Top 10 packages in code area: Top 10 object types in image heap:
668.00KB java.util 928.88KB java.lang.String
351.32KB java.lang 894.91KB byte[] for code metadata
263.70KB java.text 858.11KB byte[] for general heap data
253.27KB java.util.regex 624.24KB java.lang.Class
191.59KB java.util.concurrent 539.82KB byte[] for java.lang.String
146.42KB java.math 437.48KB java.util.HashMap$Node
116.81KB java.lang.invoke 222.19KB com.oracle.svm.core.hub.DynamicHubCompanion
103.41KB com.oracle.svm.core.genscavenge 219.66KB java.util.HashMap$Node[]
99.85KB java.util.logging 167.82KB java.lang.String[]
96.38KB sun.util.locale.provider 156.38KB java.util.concurrent.ConcurrentHashMap$Node
1.87MB for 115 more packages 1.57MB for 774 more object types

                    0.3s (2.7% of total time) in 17 GCs | Peak RSS: 3.35GB | CPU load: 5.98

Produced artifacts:
/Users/yschimke/IdeaProjects/okhttp/okcurl/build/graal/okcurl (executable)
/Users/yschimke/IdeaProjects/okhttp/okcurl/build/graal/okcurl.build_artifacts.txt (txt)

Finished generating 'okcurl' in 12.3s.
native image available at build/graal/okcurl (11 MB)

@yschimke
Copy link
Author

I'm assuming it's related to this palantir/gradle-graal#129

My classpath jars don't make it into the Native Image compile?

@yschimke
Copy link
Author

Issue is only within the gradle-graal plugin, works with a workaround.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant