I tried to build one of my simplest apps with native-image (a program that fetches mail from imap inboxes, parses them and then calls a web endpoint..
Apparently, graal doesn't like netty (and javax.mail.MessagingException as I had to manually copy it into my sources)
if required, I can provide a sample application.
the jar that includes ReferenceCountedOpenSslServerContext is in the classpath.. looks like it has problems with inner-classes ?
Build on Server(pid: 24521, port: 26682)
SendBuildRequest [
-task=com.oracle.svm.hosted.NativeImageGeneratorRunner
-imagecp
/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/builder/objectfile.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/builder/pointsto.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/builder/svm-enterprise.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/builder/svm.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/jvmci/enterprise-graal.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/jvmci/graal.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/jvmci/jvmci-api.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/jvmci/jvmci-hotspot.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/boot/graal-sdk.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/boot/graaljs-scriptengine.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/library-support-enterprise.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/library-support.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/at.xx.bounces.mailbouncehandler-1.0-SNAPSHOT.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/com.google.guava.guava-21.0.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/com.sun.mail.javax.mail-1.5.6.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/com.typesafe.config-1.3.1.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/com.typesafe.netty.netty-reactive-streams-1.0.8.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/io.netty.netty-handler-4.0.45.Final.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/io.netty.netty-buffer-4.0.45.Final.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/io.netty.netty-codec-4.0.45.Final.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/io.netty.netty-codec-http-4.0.45.Final.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/io.netty.netty-common-4.0.45.Final.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/io.netty.netty-transport-4.0.45.Final.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/io.netty.netty-transport-native-epoll-4.0.45.Final-linux-x86_64.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/javax.activation.activation-1.1.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/javax.inject.javax.inject-1.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/org.asynchttpclient.async-http-client-2.0.31.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/org.asynchttpclient.async-http-client-netty-utils-2.0.31.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/org.asynchttpclient.netty-codec-dns-2.0.31.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/org.asynchttpclient.netty-resolver-2.0.31.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/org.asynchttpclient.netty-resolver-dns-2.0.31.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/org.reactivestreams.reactive-streams-1.0.0.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/org.scala-lang.scala-library-2.12.4.jar:/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib/org.slf4j.slf4j-api-1.7.23.jar
-H:Path=/Users/domdorn/gfm/xx/mailbouncehandler/target/docker/stage/opt/docker/lib
-H:Class=xx.xx.mails.MailBounceHandlerApplication
-H:Name=xx.xx.bounces.mailbouncehandler-1.0-SNAPSHOT
-H:CLibraryPath=/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/clibraries/darwin-amd64
]
classlist: 1,302.42 ms
(cap): 521.70 ms
setup: 639.25 ms
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
RecomputeFieldValue.ArrayBaseOffset automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.arrayBaseOffset(Class) was detected in the static initializer of io.netty.util.internal.PlatformDependent. Add a RecomputeFieldValue.ArrayBaseOffset manual substitution for io.netty.util.internal.PlatformDependent.
RecomputeFieldValue.ArrayIndexScale automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.arrayIndexScale(Class) was detected in the static initializer of io.netty.util.internal.shaded.org.jctools.util.UnsafeRefArrayAccess. Add a RecomputeFieldValue.ArrayIndexScale manual substitution for io.netty.util.internal.shaded.org.jctools.util.UnsafeRefArrayAccess.
RecomputeFieldValue.ArrayIndexScale automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.arrayIndexScale(Class) was detected in the static initializer of io.netty.util.internal.PlatformDependent0. Add a RecomputeFieldValue.ArrayIndexScale manual substitution for io.netty.util.internal.PlatformDependent0.
RecomputeFieldValue.FieldOffset automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.objectFieldOffset(Field) was detected in the static initializer of io.netty.util.internal.PlatformDependent0. Add a RecomputeFieldValue.FieldOffset manual substitution for io.netty.util.internal.PlatformDependent0.
analysis: 1,365.81 ms
fatal error: java.lang.NoClassDefFoundError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:598)
at java.util.concurrent.ForkJoinTask.get(ForkJoinTask.java:1005)
at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:398)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:240)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:337)
at com.oracle.svm.hosted.server.NativeImageBuildServer.executeCompilation(NativeImageBuildServer.java:378)
at com.oracle.svm.hosted.server.NativeImageBuildServer.lambda$processCommand$8(NativeImageBuildServer.java:315)
at com.oracle.svm.hosted.server.NativeImageBuildServer.withJVMContext(NativeImageBuildServer.java:396)
at com.oracle.svm.hosted.server.NativeImageBuildServer.processCommand(NativeImageBuildServer.java:312)
at com.oracle.svm.hosted.server.NativeImageBuildServer.processRequest(NativeImageBuildServer.java:256)
at com.oracle.svm.hosted.server.NativeImageBuildServer.lambda$serve$7(NativeImageBuildServer.java:216)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: io/netty/handler/ssl/ReferenceCountedOpenSslServerContext$ExtendedTrustManagerVerifyCallback
at java.lang.Class.getDeclaringClass0(Native Method)
at java.lang.Class.getDeclaringClass(Class.java:1235)
at java.lang.Class.getEnclosingClass(Class.java:1277)
at jdk.vm.ci.hotspot.HotSpotResolvedObjectTypeImpl.getEnclosingType(HotSpotResolvedObjectTypeImpl.java:894)
at jdk.vm.ci.hotspot.HotSpotResolvedObjectTypeImpl.getEnclosingType(HotSpotResolvedObjectTypeImpl.java:58)
at com.oracle.graal.pointsto.meta.AnalysisType.getEnclosingType(AnalysisType.java:917)
at com.oracle.svm.hosted.analysis.Inflation.checkType(Inflation.java:138)
at java.lang.Iterable.forEach(Iterable.java:75)
at java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1080)
at com.oracle.svm.hosted.analysis.Inflation.checkObjectGraph(Inflation.java:123)
at com.oracle.graal.pointsto.BigBang.checkObjectGraph(BigBang.java:580)
at com.oracle.graal.pointsto.BigBang.finish(BigBang.java:552)
at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:653)
at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:381)
at java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1386)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Error: Processing image build request failed
enhanced verbosity:
Executing [
/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/bin/java \
-Xbootclasspath/a:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/boot/graal-sdk.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/boot/graaljs-scriptengine.jar \
-cp \
/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/builder/objectfile.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/builder/pointsto.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/builder/svm-enterprise.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/builder/svm.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/jvmci/enterprise-graal.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/jvmci/graal.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/jvmci/jvmci-api.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/jvmci/jvmci-hotspot.jar \
-server \
-d64 \
-noverify \
-XX:+UnlockExperimentalVMOptions \
-XX:+EnableJVMCI \
-XX:-UseJVMCIClassLoader \
-XX:+UseJVMCICompiler \
-Dgraal.CompileGraalWithC1Only=false \
-XX:CICompilerCount=4 \
-Dgraal.VerifyGraalGraphs=false \
-Dgraal.VerifyGraalGraphEdges=false \
-Dgraal.VerifyGraalPhasesSize=false \
-Dgraal.VerifyPhases=false \
-Dgraal.EagerSnippets=true \
-Xss10m \
-Xms1g \
-Xmx14g \
-Duser.country=US \
-Duser.language=en \
-Dsubstratevm.version=68c7c1073a86a3d541ffb82434acc664f3096079:substratevm,a642b10d9d3c8ca79be66d5694311e769e1526a9:substratevm-enterprise \
-Dgraalvm.version=1.0.0-rc1 \
-Dorg.graalvm.version=1.0.0-rc1 \
-Dcom.oracle.graalvm.isaot=true \
-Djvmci.class.path.append=/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/jvmci/enterprise-graal.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/jvmci/graal.jar \
com.oracle.svm.hosted.NativeImageGeneratorRunner \
-imagecp \
/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/boot/graal-sdk.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/boot/graaljs-scriptengine.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/builder/objectfile.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/builder/pointsto.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/builder/svm-enterprise.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/builder/svm.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/jvmci/enterprise-graal.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/jvmci/graal.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/jvmci/jvmci-api.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/jvmci/jvmci-hotspot.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/library-support-enterprise.jar:/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/library-support.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/xx.xxx.bounces.mailbouncehandler-1.0-SNAPSHOT.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/com.google.guava.guava-21.0.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/com.sun.mail.javax.mail-1.5.6.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/com.typesafe.config-1.3.1.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/com.typesafe.netty.netty-reactive-streams-1.0.8.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/io.netty.netty-handler-4.0.45.Final.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/io.netty.netty-buffer-4.0.45.Final.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/io.netty.netty-codec-4.0.45.Final.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/io.netty.netty-codec-http-4.0.45.Final.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/io.netty.netty-common-4.0.45.Final.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/io.netty.netty-transport-4.0.45.Final.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/io.netty.netty-transport-native-epoll-4.0.45.Final-linux-x86_64.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/javax.activation.activation-1.1.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/javax.inject.javax.inject-1.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/org.asynchttpclient.async-http-client-2.0.31.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/org.asynchttpclient.async-http-client-netty-utils-2.0.31.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/org.asynchttpclient.netty-codec-dns-2.0.31.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/org.asynchttpclient.netty-resolver-2.0.31.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/org.asynchttpclient.netty-resolver-dns-2.0.31.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/org.reactivestreams.reactive-streams-1.0.0.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/org.scala-lang.scala-library-2.12.4.jar:/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib/org.slf4j.slf4j-api-1.7.23.jar \
-H:Path=/Users/domdorn/gfm/xxx/mailbouncehandler/target/docker/stage/opt/docker/lib \
-H:Class=xx.xxx.mails.MailBounceHandlerApplication \
-H:Name=xx.xxx.bounces.mailbouncehandler-1.0-SNAPSHOT \
-H:CLibraryPath=/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/jre/lib/svm/clibraries/darwin-amd64
]
classlist: 3,042.47 ms
(cap): 880.73 ms
setup: 1,803.99 ms
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
RecomputeFieldValue.ArrayBaseOffset automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.arrayBaseOffset(Class) was detected in the static initializer of io.netty.util.internal.PlatformDependent. Add a RecomputeFieldValue.ArrayBaseOffset manual substitution for io.netty.util.internal.PlatformDependent.
RecomputeFieldValue.ArrayIndexScale automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.arrayIndexScale(Class) was detected in the static initializer of io.netty.util.internal.shaded.org.jctools.util.UnsafeRefArrayAccess. Add a RecomputeFieldValue.ArrayIndexScale manual substitution for io.netty.util.internal.shaded.org.jctools.util.UnsafeRefArrayAccess.
RecomputeFieldValue.ArrayIndexScale automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.arrayIndexScale(Class) was detected in the static initializer of io.netty.util.internal.PlatformDependent0. Add a RecomputeFieldValue.ArrayIndexScale manual substitution for io.netty.util.internal.PlatformDependent0.
RecomputeFieldValue.FieldOffset automatic substitution failed. The automatic substitution registration was attempted because a call to sun.misc.Unsafe.objectFieldOffset(Field) was detected in the static initializer of io.netty.util.internal.PlatformDependent0. Add a RecomputeFieldValue.FieldOffset manual substitution for io.netty.util.internal.PlatformDependent0.
analysis: 3,991.65 ms
fatal error: java.lang.NoClassDefFoundError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:598)
at java.util.concurrent.ForkJoinTask.get(ForkJoinTask.java:1005)
at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:398)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:240)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:337)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:78)
Caused by: java.lang.NoClassDefFoundError: io/netty/handler/ssl/ReferenceCountedOpenSslServerContext$ExtendedTrustManagerVerifyCallback
at java.lang.Class.getDeclaringClass0(Native Method)
at java.lang.Class.getDeclaringClass(Class.java:1235)
at java.lang.Class.getEnclosingClass(Class.java:1277)
at jdk.vm.ci.hotspot.HotSpotResolvedObjectTypeImpl.getEnclosingType(HotSpotResolvedObjectTypeImpl.java:894)
at jdk.vm.ci.hotspot.HotSpotResolvedObjectTypeImpl.getEnclosingType(HotSpotResolvedObjectTypeImpl.java:58)
at com.oracle.graal.pointsto.meta.AnalysisType.getEnclosingType(AnalysisType.java:917)
at com.oracle.svm.hosted.analysis.Inflation.checkType(Inflation.java:138)
at java.lang.Iterable.forEach(Iterable.java:75)
at java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1080)
at com.oracle.svm.hosted.analysis.Inflation.checkObjectGraph(Inflation.java:123)
at com.oracle.graal.pointsto.BigBang.checkObjectGraph(BigBang.java:580)
at com.oracle.graal.pointsto.BigBang.finish(BigBang.java:552)
at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:653)
at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:381)
at java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1386)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Error: Image building with exit status 1
command used to compile
/Library/Java/JavaVirtualMachines/graalvm-1.0.0-rc1/Contents/Home/bin/native-image \
--verbose --no-server \
-cp \
com.google.guava.guava-21.0.jar:\
com.sun.mail.javax.mail-1.5.6.jar:\
com.typesafe.config-1.3.1.jar:\
com.typesafe.netty.netty-reactive-streams-1.0.8.jar:\
io.netty.netty-handler-4.0.45.Final.jar:\
io.netty.netty-buffer-4.0.45.Final.jar:\
io.netty.netty-codec-4.0.45.Final.jar:\
io.netty.netty-codec-http-4.0.45.Final.jar:\
io.netty.netty-common-4.0.45.Final.jar:\
io.netty.netty-transport-4.0.45.Final.jar:\
io.netty.netty-transport-native-epoll-4.0.45.Final-linux-x86_64.jar:\
javax.activation.activation-1.1.jar:\
javax.inject.javax.inject-1.jar:\
org.asynchttpclient.async-http-client-2.0.31.jar:\
org.asynchttpclient.async-http-client-netty-utils-2.0.31.jar:\
org.asynchttpclient.netty-codec-dns-2.0.31.jar:\
org.asynchttpclient.netty-resolver-2.0.31.jar:\
org.asynchttpclient.netty-resolver-dns-2.0.31.jar:\
org.reactivestreams.reactive-streams-1.0.0.jar:\
org.scala-lang.scala-library-2.12.4.jar:\
org.slf4j.slf4j-api-1.7.23.jar\
\
-jar xx.xxx.bounces.mailbouncehandler-1.0-SNAPSHOT.jar
Thank you for your report. Netty is a library that we looked at before and plan to fully support. As with other libraries netty's use of reflection and unsafe operations needs special handling for native image compilation. In our experiments we successfully run a subset of the netty test suite and will make that available soon.
@domdorn can you provide a sample application? I'll give it a try.
The NoClassDefFoundError is caused by missing the netty-tcnative dependency on the classpath. ReferenceCountedOpenSslServerContext is importing classes from io.netty.internal.tcnative.*. While your application might not use netty-tcnative the netty ssl handler was compiled with support for it. This is not a problem for the JVM as long as your app doesn't use the tcnative classes. However, the SubstrateVM analysis egarly discovers and loads all reachable classes during the build process. I updated the analysis behaviour to report such issues at runtime when you run with the --report-unsupported-elements-at-runtime. To try it you will need to clone the repo and build from source, details in the quick start guide.. (You might still run into other issues with netty at this point).
I created a small example project which uses Vert.x (utilizes netty). It could be used to test native-image generation. I'm going to use this project to check when native image generation with netty will work.
https://github.com/Jotschi/vertx-graalvm-native-image-test
Update: I actually managed to get it working but I had to patch a few places in Netty and Vert.x here and there.
A similar issue occurs when using log4j2.
Using 1.0.0-rc2, it seems as though log4j2's (unused) dependency on lmax disruptor causes SubstrateVM to fall over for the same reasons as above.
native-image -jar /build/config-processor/converter/build/libs/config-processor.jar
---> Running in 26189cf9659c
Build on Server(pid: 12, port: 42571)*
classlist: 11,487.55 ms
(cap): 1,258.08 ms
setup: 2,449.04 ms
analysis: 5,732.79 ms
fatal error: java.lang.NoClassDefFoundError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:598)
at java.util.concurrent.ForkJoinTask.get(ForkJoinTask.java:1005)
at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:381)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:281)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:378)
at com.oracle.svm.hosted.server.NativeImageBuildServer.executeCompilation(NativeImageBuildServer.java:390)
at com.oracle.svm.hosted.server.NativeImageBuildServer.lambda$processCommand$8(NativeImageBuildServer.java:327)
at com.oracle.svm.hosted.server.NativeImageBuildServer.withJVMContext(NativeImageBuildServer.java:408)
at com.oracle.svm.hosted.server.NativeImageBuildServer.processCommand(NativeImageBuildServer.java:324)
at com.oracle.svm.hosted.server.NativeImageBuildServer.processRequest(NativeImageBuildServer.java:268)
at com.oracle.svm.hosted.server.NativeImageBuildServer.lambda$serve$7(NativeImageBuildServer.java:228)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: com/lmax/disruptor/EventFactory
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.<clinit>(AsyncLoggerConfigDisruptor.java:133)
at sun.misc.Unsafe.ensureClassInitialized(Native Method)
at jdk.vm.ci.hotspot.HotSpotResolvedObjectTypeImpl.initialize(HotSpotResolvedObjectTypeImpl.java:382)
at com.oracle.graal.pointsto.meta.AnalysisUniverse.createType(AnalysisUniverse.java:213)
at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookupAllowUnresolved(AnalysisUniverse.java:193)
at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookup(AnalysisUniverse.java:170)
at com.oracle.graal.pointsto.meta.AnalysisField.<init>(AnalysisField.java:104)
at com.oracle.graal.pointsto.meta.AnalysisUniverse.createField(AnalysisUniverse.java:357)
at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookupAllowUnresolved(AnalysisUniverse.java:345)
at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookup(AnalysisUniverse.java:312)
at com.oracle.graal.pointsto.meta.AnalysisType.convertFields(AnalysisType.java:857)
at com.oracle.graal.pointsto.meta.AnalysisType.convertInstanceFields(AnalysisType.java:850)
at com.oracle.graal.pointsto.meta.AnalysisType.getInstanceFields(AnalysisType.java:841)
at com.oracle.graal.pointsto.meta.AnalysisType.convertInstanceFields(AnalysisType.java:848)
at com.oracle.graal.pointsto.meta.AnalysisType.getInstanceFields(AnalysisType.java:841)
at com.oracle.graal.pointsto.ObjectScanner.doScan(ObjectScanner.java:268)
at com.oracle.graal.pointsto.ObjectScanner.finish(ObjectScanner.java:315)
at com.oracle.graal.pointsto.ObjectScanner.scanBootImageHeapRoots(ObjectScanner.java:81)
at com.oracle.graal.pointsto.ObjectScanner.scanBootImageHeapRoots(ObjectScanner.java:63)
at com.oracle.graal.pointsto.BigBang.checkObjectGraph(BigBang.java:583)
at com.oracle.graal.pointsto.BigBang.finish(BigBang.java:554)
at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:642)
at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:364)
at java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1386)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: java.lang.ClassNotFoundException: com.lmax.disruptor.EventFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 39 more
Error: Processing image build request failed
The command '/bin/sh -c native-image -jar /build/config-processor/converter/build/libs/config-processor.jar' returned a non-zero code: 1
I got the same error due to log4j2, adding --report-unsupported-elements-at-runtime to the command line had no effect.
Maybe the same bug as #494
@outofcoffee The log4j error that you reported here, which is slightly different than the original error in this issue, but which seems to be the same as in https://github.com/oracle/graal/issues/494, should be fixed. See https://github.com/oracle/graal/issues/494#issuecomment-411918701 for reference.
@domdorn do you still get the original error that you reported with the latest GraalVM, i.e., 1.0.0 rc5? The java.lang.NoClassDefFoundError should be pushed to runtime when you run native-image with --report-unsupported-elements-at-runtime. I'll close this issue for now, please reopen if needed.
I got the same error. I am writing simple TCP server using Netty and want to create native image using GraalVM.
Build : graalvm-ce-1.0.0-rc5 with --report-unsupported-elements-at-runtime
Build on Server(pid: 5511, port: 35395)
classlist: 7,735.79 ms
(cap): 626.99 ms
setup: 961.07 ms
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
analysis: 872.75 ms
fatal error: java.lang.NoClassDefFoundError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:598)
at java.util.concurrent.ForkJoinTask.get(ForkJoinTask.java:1005)
at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:414)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:275)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:372)
at com.oracle.svm.hosted.server.NativeImageBuildServer.executeCompilation(NativeImageBuildServer.java:390)
at com.oracle.svm.hosted.server.NativeImageBuildServer.lambda$processCommand$8(NativeImageBuildServer.java:327)
at com.oracle.svm.hosted.server.NativeImageBuildServer.withJVMContext(NativeImageBuildServer.java:408)
at com.oracle.svm.hosted.server.NativeImageBuildServer.processCommand(NativeImageBuildServer.java:324)
at com.oracle.svm.hosted.server.NativeImageBuildServer.processRequest(NativeImageBuildServer.java:268)
at com.oracle.svm.hosted.server.NativeImageBuildServer.lambda$serve$7(NativeImageBuildServer.java:228)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NoClassDefFoundError: com/lmax/disruptor/EventFactory
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.apache.logging.log4j.core.async.AsyncLoggerConfigDisruptor.<clinit>(AsyncLoggerConfigDisruptor.java:133)
at sun.misc.Unsafe.ensureClassInitialized(Native Method)
at jdk.vm.ci.hotspot.HotSpotResolvedObjectTypeImpl.initialize(HotSpotResolvedObjectTypeImpl.java:389)
at com.oracle.graal.pointsto.meta.AnalysisUniverse.createType(AnalysisUniverse.java:213)
at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookupAllowUnresolved(AnalysisUniverse.java:193)
at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookup(AnalysisUniverse.java:170)
at com.oracle.graal.pointsto.meta.AnalysisField.<init>(AnalysisField.java:104)
at com.oracle.graal.pointsto.meta.AnalysisUniverse.createField(AnalysisUniverse.java:357)
at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookupAllowUnresolved(AnalysisUniverse.java:345)
at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookup(AnalysisUniverse.java:312)
at com.oracle.graal.pointsto.meta.AnalysisType.convertFields(AnalysisType.java:862)
at com.oracle.graal.pointsto.meta.AnalysisType.convertInstanceFields(AnalysisType.java:855)
at com.oracle.graal.pointsto.meta.AnalysisType.getInstanceFields(AnalysisType.java:846)
at com.oracle.graal.pointsto.meta.AnalysisType.convertInstanceFields(AnalysisType.java:853)
at com.oracle.graal.pointsto.meta.AnalysisType.getInstanceFields(AnalysisType.java:846)
at com.oracle.graal.pointsto.ObjectScanner.doScan(ObjectScanner.java:268)
at com.oracle.graal.pointsto.ObjectScanner.finish(ObjectScanner.java:312)
at com.oracle.graal.pointsto.ObjectScanner.scanBootImageHeapRoots(ObjectScanner.java:81)
at com.oracle.graal.pointsto.ObjectScanner.scanBootImageHeapRoots(ObjectScanner.java:63)
at com.oracle.graal.pointsto.BigBang.checkObjectGraph(BigBang.java:585)
at com.oracle.graal.pointsto.BigBang.finish(BigBang.java:556)
at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:674)
at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:397)
at java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1386)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: java.lang.ClassNotFoundException: com.lmax.disruptor.EventFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 39 more
Error: Processing image build request failed
@geek29 the fix will be included in rc6.
Is this issue realy fixed ? (just asking)
I'm using 1.0.0-rc6, with a project having netty and log4j2 dependencies. --report-unsupported-elements-at-runtime have no effect on this error.
> native-image --version
GraalVM Version 1.0.0-rc6
Through native-image \
-ea \
--no-server \
--class-path $CLASSPATH \
-Djava.net.preferIPv4Stack=true \
-jar "target/my-jar-1.0.0-SNAPSHOT.jar" i'm still getting :
fatal error: java.lang.NoClassDefFoundError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:598)
at java.util.concurrent.ForkJoinTask.get(ForkJoinTask.java:1005)
at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:418)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:278)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:375)
at com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:104)
Caused by: java.lang.NoClassDefFoundError
at jdk.vm.ci.hotspot.HotSpotJVMCIRuntime.lookupType(HotSpotJVMCIRuntime.java:464)
at jdk.vm.ci.hotspot.HotSpotResolvedObjectTypeImpl.lookupType(HotSpotResolvedObjectTypeImpl.java:957)
at jdk.vm.ci.meta.UnresolvedJavaType.resolve(UnresolvedJavaType.java:92)
at jdk.vm.ci.hotspot.HotSpotResolvedJavaFieldImpl.getType(HotSpotResolvedJavaFieldImpl.java:126)
at com.oracle.graal.pointsto.meta.AnalysisType.<init>(AnalysisType.java:185)
at com.oracle.graal.pointsto.meta.AnalysisUniverse.createType(AnalysisUniverse.java:251)
at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookupAllowUnresolved(AnalysisUniverse.java:193)
at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookup(AnalysisUniverse.java:170)
at com.oracle.graal.pointsto.meta.AnalysisField.<init>(AnalysisField.java:104)
at com.oracle.graal.pointsto.meta.AnalysisUniverse.createField(AnalysisUniverse.java:353)
at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookupAllowUnresolved(AnalysisUniverse.java:341)
at com.oracle.graal.pointsto.meta.AnalysisUniverse.lookup(AnalysisUniverse.java:308)
at com.oracle.graal.pointsto.meta.AnalysisType.convertFields(AnalysisType.java:875)
at com.oracle.graal.pointsto.meta.AnalysisType.convertInstanceFields(AnalysisType.java:868)
at com.oracle.graal.pointsto.meta.AnalysisType.getInstanceFields(AnalysisType.java:859)
at com.oracle.graal.pointsto.meta.AnalysisType.convertInstanceFields(AnalysisType.java:866)
at com.oracle.graal.pointsto.meta.AnalysisType.getInstanceFields(AnalysisType.java:859)
at com.oracle.graal.pointsto.ObjectScanner.doScan(ObjectScanner.java:268)
at com.oracle.graal.pointsto.ObjectScanner.finish(ObjectScanner.java:312)
at com.oracle.graal.pointsto.ObjectScanner.scanBootImageHeapRoots(ObjectScanner.java:81)
at com.oracle.graal.pointsto.ObjectScanner.scanBootImageHeapRoots(ObjectScanner.java:63)
at com.oracle.graal.pointsto.BigBang.checkObjectGraph(BigBang.java:591)
at com.oracle.graal.pointsto.BigBang.finish(BigBang.java:562)
at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:690)
at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:401)
at java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1386)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: java.lang.ClassNotFoundException: com.lmax.disruptor.dsl.Disruptor
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at jdk.vm.ci.hotspot.CompilerToVM.lookupType(Native Method)
at jdk.vm.ci.hotspot.HotSpotJVMCIRuntime.lookupType(HotSpotJVMCIRuntime.java:456)
... 29 more
Error: Image building with exit status 1
@SR-G your trace is slightly different than the original trace, so this is likely a different, but related issue. Could you open a separate issue with steps to reproduce? Thank you!
Done in #671.
Most helpful comment
Thank you for your report. Netty is a library that we looked at before and plan to fully support. As with other libraries netty's use of reflection and unsafe operations needs special handling for native image compilation. In our experiments we successfully run a subset of the netty test suite and will make that available soon.