Skip to content

[native-image] can't compile project which uses netty #353

Closed
@domdorn

Description

@domdorn

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions