-
Bug
-
Resolution: Unresolved
-
Major
-
None
-
None
-
None
-
None
Undertow cannot be compiled with the Graal AOT compiler. I would like to do this:
- create a standard maven project
- add undertow-core 2.0.13.Final as a dependency
- add a main with basic undertow code:
public static void main(final String... args) { Undertow.builder() .addHttpListener(8080, "0.0.0.0") .setHandler(exchange -> exchange.getResponseSender().send("Hello, world!\n")) .build().start(); }
- use the shader to create a fatjar
- optionally run the fatjar to prove it works on its own
- install Graal latest version and run native-image
This error occurs:
$ native-image -jar test.jar Build on Server(pid: 314, port: 39039)* classlist: 4,159.03 ms (cap): 1,260.87 ms setup: 2,727.01 ms Sep 01, 2018 2:45:24 PM org.xnio.Xnio <clinit> INFO: XNIO version 3.3.8.Final Detected unnecessary RecomputeFieldValue.ArrayBaseOffset com.oracle.svm.core.jdk.Target_java_nio_DirectByteBuffer.arrayBaseOffset substitution field for java.nio.DirectByteBuffer.arrayBaseOffset. The annotated field can be removed. This ArrayBaseOffset computation can be detected automatically. Use option -H:+UnsafeAutomaticSubstitutionsLogLevel=2 to print all automatically detected substitutions. analysis: 12,106.93 ms error: Error loading a referenced type: java.lang.NoClassDefFoundError: org/osgi/framework/FrameworkUtil Detailed message: Error: Error loading a referenced type: java.lang.NoClassDefFoundError: org/osgi/framework/FrameworkUtil Trace: at parsing org.xnio.Xnio$OsgiSupport.doGetOsgiService(Xnio.java:276) Call path from entry point to org.xnio.Xnio$OsgiSupport.doGetOsgiService(): at org.xnio.Xnio$OsgiSupport.doGetOsgiService(Xnio.java:276) at org.xnio.Xnio.doGetInstance(Xnio.java:261) at org.xnio.Xnio.getInstance(Xnio.java:187) at io.undertow.Undertow.start(Undertow.java:117) at graaltest.Main.main(Main.java:11) at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:177) at com.oracle.svm.core.code.CEntryPointCallStubs.com_002eoracle_002esvm_002ecore_002eJavaMainWrapper_002erun_0028int_002corg_002egraalvm_002enativeimage_002ec_002etype_002eCCharPointerPointer_0029(generated:0) Original exception that caused the problem: java.lang.NoClassDefFoundError: org/osgi/framework/FrameworkUtil at jdk.vm.ci.hotspot.CompilerToVM.resolveTypeInPool(Native Method) at jdk.vm.ci.hotspot.HotSpotConstantPool.loadReferencedType(HotSpotConstantPool.java:696) at com.oracle.graal.pointsto.infrastructure.WrappedConstantPool.loadReferencedType(WrappedConstantPool.java:60) at org.graalvm.compiler.java.BytecodeParser.maybeEagerlyResolve(BytecodeParser.java:3971) at com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.maybeEagerlyResolve(SharedGraphBuilderPhase.java:99) at org.graalvm.compiler.java.BytecodeParser.lookupMethod(BytecodeParser.java:3925) at org.graalvm.compiler.java.BytecodeParser.genInvokeStatic(BytecodeParser.java:1422) at com.oracle.svm.hosted.phases.SharedGraphBuilderPhase$SharedBytecodeParser.genInvokeStatic(SharedGraphBuilderPhase.java:168) at org.graalvm.compiler.java.BytecodeParser.processBytecode(BytecodeParser.java:4850) at org.graalvm.compiler.java.BytecodeParser.iterateBytecodesForBlock(BytecodeParser.java:3135) at org.graalvm.compiler.java.BytecodeParser.processBlock(BytecodeParser.java:2944) at org.graalvm.compiler.java.BytecodeParser.build(BytecodeParser.java:888) at org.graalvm.compiler.java.BytecodeParser.buildRootMethod(BytecodeParser.java:782) at org.graalvm.compiler.java.GraphBuilderPhase$Instance.run(GraphBuilderPhase.java:95) at org.graalvm.compiler.phases.Phase.run(Phase.java:49) at org.graalvm.compiler.phases.BasePhase.apply(BasePhase.java:197) at org.graalvm.compiler.phases.Phase.apply(Phase.java:42) at org.graalvm.compiler.phases.Phase.apply(Phase.java:38) at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.parse(MethodTypeFlowBuilder.java:196) at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:315) at com.oracle.graal.pointsto.flow.MethodTypeFlow.doParse(MethodTypeFlow.java:310) at com.oracle.graal.pointsto.flow.MethodTypeFlow.ensureParsed(MethodTypeFlow.java:300) at com.oracle.graal.pointsto.flow.MethodTypeFlow.addContext(MethodTypeFlow.java:107) at com.oracle.graal.pointsto.flow.StaticInvokeTypeFlow.update(InvokeTypeFlow.java:346) at com.oracle.graal.pointsto.BigBang$2.run(BigBang.java:502) at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$execute$0(CompletionExecutor.java:174) at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402) 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: org.osgi.framework.FrameworkUtil at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 31 more Error: Processing image build request failed