taylorwood / clj.native-image

Build GraalVM native images with Clojure Deps and CLI tools
MIT License
271 stars 20 forks source link

Build failure: unsupported features; unbalanced monitors #15

Closed aviflax closed 4 years ago

aviflax commented 5 years ago

👋 hi @taylorwood, I hope you don’t mind me dropping another general “I have no idea what I’m doing” issue on you. Given that it’s been almost exactly a year since my last attempt (#2) I wanted to try again to create a native image of my project. I didn’t get very far and I don’t really understand the error output, so I’m hoping you might have a few minutes to point me in the right direction.

I’m running MacOS 10.14.5 and I’m using GraalVM CE 19.2.1 and native-image 19.2.1.

Here’s the profile I added to my deps.edn:

:native-image {:extra-deps {taylorwood/clj.native-image {:git/url "https://github.com/taylorwood/clj.native-image"
                                                         :sha "b3823a48be75122b9671c86ce5353a85589ef15f"}}
               :jvm-opts ["-Dclojure.compiler.direct-linking=true"]
               :main-opts ["-m clj.native-image fc4.io.cli.main"
                           "--initialize-at-build-time"
                           "--no-fallback"
                           "--allow-incomplete-classpath"
                           "--report-unsupported-elements-at-runtime"
                           "-H:Name=target/fc4"]}

and here’s the output when I run clojure -A:native-image:

output ```text ~/dev/fc4-framework/tool $ clojure -A:native-image Compiling fc4.io.cli.main Reflection warning, clj_chrome_devtools/automation.clj:61:5 - reference to field close on java.lang.Object can't be resolved. Compiling fc4.files Compiling fc4.image-utils Compiling fc4.integrations.structurizr.express.chromium-renderer Compiling fc4.integrations.structurizr.express.export Compiling fc4.integrations.structurizr.express.format Compiling fc4.integrations.structurizr.express.snap Compiling fc4.integrations.structurizr.express.spec Compiling fc4.integrations.structurizr.express.yaml Compiling fc4.io.cli.main Compiling fc4.io.cli.util Compiling fc4.io.dsl Compiling fc4.io.render Compiling fc4.io.util Compiling fc4.io.watch Compiling fc4.io.yaml Compiling fc4.model Compiling fc4.rendering Compiling fc4.spec Compiling fc4.styles Compiling fc4.util Compiling fc4.view Compiling fc4.yaml [target/fc4:64156] classlist: 10,049.22 ms [target/fc4:64156] (cap): 1,399.70 ms [target/fc4:64156] setup: 2,605.29 ms [target/fc4:64156] analysis: 105,538.54 ms Error: Unsupported features in 8 methods Detailed message: Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: java.lang.invoke.MethodHandle.bindTo(Object) Trace: at parsing java.lang.invoke.MethodHandleImpl.makePairwiseConvertByEditor(MethodHandleImpl.java:221) Call path from entry point to java.lang.invoke.MethodHandleImpl.makePairwiseConvertByEditor(MethodHandle, MethodType, boolean, boolean): at java.lang.invoke.MethodHandleImpl.makePairwiseConvertByEditor(MethodHandleImpl.java:207) at java.lang.invoke.MethodHandleImpl.makePairwiseConvert(MethodHandleImpl.java:194) at java.lang.invoke.MethodHandleImpl.makePairwiseConvert(MethodHandleImpl.java:380) at java.lang.invoke.MethodHandle.asTypeUncached(MethodHandle.java:776) at java.lang.invoke.MethodHandle.asType(MethodHandle.java:761) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at com.oracle.svm.reflect.MethodHandle_invokeWithArguments_9dda848d0201e4e26c7b3711f56411a6605b9b6f_29.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:498) at clojure.core$bean$fn__7197$fn__7198.invoke(core_proxy.clj:408) at clojure.lang.AFn.run(AFn.java:22) at java.lang.Thread.run(Thread.java:748) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: java.lang.invoke.MethodHandleImpl$BindCaller.prepareForInvoker(MethodHandle) Trace: at parsing java.lang.invoke.MethodHandleImpl$BindCaller.makeInjectedInvoker(MethodHandleImpl.java:1166) Call path from entry point to java.lang.invoke.MethodHandleImpl$BindCaller.makeInjectedInvoker(Class): at java.lang.invoke.MethodHandleImpl$BindCaller.makeInjectedInvoker(MethodHandleImpl.java:1141) at java.lang.invoke.MethodHandleImpl$BindCaller.access$300(MethodHandleImpl.java:1122) at java.lang.invoke.MethodHandleImpl$BindCaller$1.computeValue(MethodHandleImpl.java:1175) at java.lang.invoke.MethodHandleImpl$BindCaller$1.computeValue(MethodHandleImpl.java:1173) at com.oracle.svm.core.jdk.Target_java_lang_ClassValue.get(JavaLangSubstitutions.java:514) at java.lang.invoke.MethodHandleImpl.makeArrayElementAccessor(MethodHandleImpl.java:76) at java.lang.invoke.MethodHandles.arrayElementGetter(MethodHandles.java:1825) at java.lang.invoke.LambdaFormEditor.spreadArgumentsForm(LambdaFormEditor.java:550) at java.lang.invoke.MethodHandle.asSpreader(MethodHandle.java:874) at java.lang.invoke.Invokers.spreadInvoker(Invokers.java:158) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at com.oracle.svm.reflect.MethodHandle_invokeWithArguments_9dda848d0201e4e26c7b3711f56411a6605b9b6f_29.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:498) at clojure.core$bean$fn__7197$fn__7198.invoke(core_proxy.clj:408) at clojure.lang.AFn.run(AFn.java:22) at java.lang.Thread.run(Thread.java:748) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: java.lang.invoke.MethodHandleImpl.buildVarargsArray(MethodHandle, MethodHandle, int) Trace: at parsing java.lang.invoke.MethodHandleImpl.varargsArray(MethodHandleImpl.java:1634) Call path from entry point to java.lang.invoke.MethodHandleImpl.varargsArray(Class, int): at java.lang.invoke.MethodHandleImpl.varargsArray(MethodHandleImpl.java:1611) at java.lang.invoke.MethodHandleImpl$IntrinsicMethodHandle.asCollector(MethodHandleImpl.java:1363) at java.lang.invoke.MethodHandleImpl$AsVarargsCollector.asTypeUncached(MethodHandleImpl.java:502) at java.lang.invoke.MethodHandle.asType(MethodHandle.java:761) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at com.oracle.svm.reflect.MethodHandle_invokeWithArguments_9dda848d0201e4e26c7b3711f56411a6605b9b6f_29.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:498) at clojure.core$bean$fn__7197$fn__7198.invoke(core_proxy.clj:408) at clojure.lang.AFn.run(AFn.java:22) at java.lang.Thread.run(Thread.java:748) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: No instances of javax.net.ssl.SSLContext are allowed in the image heap as this class should be initialized at image runtime. To see how this object got instantiated use -H:+TraceClassInitialization. Trace: at parsing org.httpkit.client.HttpClient.exec(HttpClient.java:347) Call path from entry point to org.httpkit.client.HttpClient.exec(String, RequestConfig, SSLEngine, IRespListener): at org.httpkit.client.HttpClient.exec(HttpClient.java:269) at org.httpkit.client$request.invokeStatic(client.clj:258) at org.httpkit.client$request.doInvoke(client.clj:152) at clojure.lang.RestFn.applyTo(RestFn.java:139) at fc4.io.cli.main.main(Unknown Source) at com.oracle.svm.core.JavaMainWrapper.runCore(JavaMainWrapper.java:151) at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:186) at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0) Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: No instances of javax.net.ssl.SSLContext are allowed in the image heap as this class should be initialized at image runtime. To see how this object got instantiated use -H:+TraceClassInitialization. Trace: at parsing org.httpkit.client.SslContextFactory.trustAnybody(SslContextFactory.java:36) Call path from entry point to org.httpkit.client.SslContextFactory.trustAnybody(): at org.httpkit.client.SslContextFactory.trustAnybody(SslContextFactory.java:36) at org.httpkit.client$coerce_req.invokeStatic(client.clj:68) at org.httpkit.client$coerce_req.invoke(client.clj:59) at instaparse.auto_flatten_seq.FlattenOnDemandVector.applyTo(auto_flatten_seq.clj:270) at fc4.io.cli.main.main(Unknown Source) at com.oracle.svm.core.JavaMainWrapper.runCore(JavaMainWrapper.java:151) at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:186) at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0) Error: type is not available in this platform: com.oracle.svm.hosted.NativeImageGenerator Trace: object java.lang.Class[] object java.lang.invoke.MethodType object java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry object java.util.concurrent.ConcurrentHashMap$Node object java.util.concurrent.ConcurrentHashMap$Node[] object java.util.concurrent.ConcurrentHashMap object java.lang.invoke.MethodType$ConcurrentWeakInternSet method java.lang.invoke.MethodType.makeImpl(Class, Class[], boolean) Call path from entry point to java.lang.invoke.MethodType.makeImpl(Class, Class[], boolean): at java.lang.invoke.MethodType.makeImpl(MethodType.java:301) at java.lang.invoke.MethodType.methodType(MethodType.java:206) at com.oracle.svm.reflect.MethodType_methodType_9d13644056a712f9cdb73fb2ef8b26f65294abe9_35.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:498) at clojure.core$bean$fn__7197$fn__7198.invoke(core_proxy.clj:408) at clojure.lang.AFn.run(AFn.java:22) at java.lang.Thread.run(Thread.java:748) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: type is not available in this platform: com.oracle.svm.hosted.lambda.LambdaSubstitutionType Trace: object java.lang.invoke.MethodType object java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry object java.util.concurrent.ConcurrentHashMap$Node object java.util.concurrent.ConcurrentHashMap$Node[] object java.util.concurrent.ConcurrentHashMap object java.lang.invoke.MethodType$ConcurrentWeakInternSet method java.lang.invoke.MethodType.makeImpl(Class, Class[], boolean) Call path from entry point to java.lang.invoke.MethodType.makeImpl(Class, Class[], boolean): at java.lang.invoke.MethodType.makeImpl(MethodType.java:301) at java.lang.invoke.MethodType.methodType(MethodType.java:206) at com.oracle.svm.reflect.MethodType_methodType_9d13644056a712f9cdb73fb2ef8b26f65294abe9_35.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:498) at clojure.core$bean$fn__7197$fn__7198.invoke(core_proxy.clj:408) at clojure.lang.AFn.run(AFn.java:22) at java.lang.Thread.run(Thread.java:748) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: unbalanced monitors: mismatch at monitorexit, 96|LoadField#lockee__5436__auto__ != 3|LoadField#lockee__5436__auto__ Call path from entry point to clojure.spec.gen.alpha$dynaload$fn__2628.invoke(): at clojure.spec.gen.alpha$dynaload$fn__2628.invoke(alpha.clj:21) at clojure.lang.AFn.run(AFn.java:22) at java.lang.Thread.run(Thread.java:748) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Original exception that caused the problem: org.graalvm.compiler.code.SourceStackTraceBailoutException$1: unbalanced monitors: mismatch at monitorexit, 96|LoadField#lockee__5436__auto__ != 3|LoadField#lockee__5436__auto__ at clojure.spec.gen.alpha$dynaload$fn__2628.invoke(alpha.clj:22) Caused by: org.graalvm.compiler.core.common.PermanentBailoutException: unbalanced monitors: mismatch at monitorexit, 96|LoadField#lockee__5436__auto__ != 3|LoadField#lockee__5436__auto__ at org.graalvm.compiler.java.BytecodeParser.bailout(BytecodeParser.java:3761) at org.graalvm.compiler.java.BytecodeParser.genMonitorExit(BytecodeParser.java:2703) at org.graalvm.compiler.java.BytecodeParser.processBytecode(BytecodeParser.java:5136) at org.graalvm.compiler.java.BytecodeParser.iterateBytecodesForBlock(BytecodeParser.java:3267) at org.graalvm.compiler.java.BytecodeParser.processBlock(BytecodeParser.java:3074) at org.graalvm.compiler.java.BytecodeParser.build(BytecodeParser.java:976) at org.graalvm.compiler.java.BytecodeParser.buildRootMethod(BytecodeParser.java:870) at org.graalvm.compiler.java.GraphBuilderPhase$Instance.run(GraphBuilderPhase.java:84) 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:221) at com.oracle.graal.pointsto.flow.MethodTypeFlowBuilder.apply(MethodTypeFlowBuilder.java:340) 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.SpecialInvokeTypeFlow.onObservedUpdate(InvokeTypeFlow.java:421) at com.oracle.graal.pointsto.flow.TypeFlow.notifyObservers(TypeFlow.java:343) at com.oracle.graal.pointsto.flow.TypeFlow.update(TypeFlow.java:385) at com.oracle.graal.pointsto.flow.SourceTypeFlowBase.update(SourceTypeFlowBase.java:121) at com.oracle.graal.pointsto.BigBang$2.run(BigBang.java:510) at com.oracle.graal.pointsto.util.CompletionExecutor.lambda$execute$0(CompletionExecutor.java:171) 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) Error: Use -H:+ReportExceptionStackTraces to print stacktrace of underlying exception Error: Image build request failed with exit status 1 ```

My guess is that you could walk me through fixing the “unsupported features” but that last error, the “unbalanced monitors” error — that looks familiar, IIRC that’s related to some incompatibility between GraalVM/native-image and certain code paths in the Clojure runtime… which might be non-work-around-able? If that’s the case, if we’re stuck, then there’s no need to resolve the other errors… but I’d appreciate whatever pointers you’d care to share!

If it helps, feel free to take a look at my branch of my project with that profile added.

(Also, if you’ll be at the Conj next month in Raleigh, I’ll be there too and I’d love to catch up!)

taylorwood commented 5 years ago

Hey @aviflax thanks for dropping by!

The unbalanced monitor issue is due to locking macro. There's an open Clojure JIRA for this: https://dev.clojure.org/jira/browse/CLJ-1472 and there is a hacky workaround: https://github.com/taylorwood/clojurl/commit/12b96b5e9a722b372f153436b1f6827709d0f2ab

I should have some time soon to check out your project and see if I can get it building. Looks like maybe some stuff related to reflection?

I can't make Clojure Conj this year but hope to soon!

aviflax commented 5 years ago

Wow thanks @taylorwood for the super-rapid and super-helpful response! That hacky workaround looks pretty good actually! I’m a little more intimidated by the situation with libsunec.dylib that I learned of from the excellent Clojurl README — that looks dicey. 😅

Thank you!

aviflax commented 4 years ago

Update:

I’ve implemented the hacky workaround from Clojurl to work around the issue with the locking macro, and that seems to have worked — thanks!

Now I’m getting Error: Unsupported features in 7 methods so that’s progress!

Verbose Output ```text ~/dev/fc4-framework/tool $ clojure -A:native-image Compiling fc4.io.cli.main Reflection warning, clj_chrome_devtools/automation.clj:61:5 - reference to field close on java.lang.Object can't be resolved. Compiling fc4.files Compiling fc4.image-utils Compiling fc4.integrations.structurizr.express.chromium-renderer Compiling fc4.integrations.structurizr.express.export Compiling fc4.integrations.structurizr.express.format Compiling fc4.integrations.structurizr.express.snap Compiling fc4.integrations.structurizr.express.spec Compiling fc4.integrations.structurizr.express.yaml Compiling fc4.io.cli.main Compiling fc4.io.cli.util Compiling fc4.io.dsl Compiling fc4.io.render Compiling fc4.io.util Compiling fc4.io.watch Compiling fc4.io.yaml Compiling fc4.model Compiling fc4.rendering Compiling fc4.spec Compiling fc4.styles Compiling fc4.util Compiling fc4.view Compiling fc4.yaml Warning: Invalid classpath entry: /Users/avi.flax/.m2/repository/net/incongru/watchservice/barbary-watchservice/1.0/jna-3.2.2.jar Executing [ /Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/bin/java \ -XX:+UnlockExperimentalVMOptions \ -XX:+EnableJVMCI \ -Dtruffle.TrustAllTruffleRuntimeProviders=true \ -Dtruffle.TruffleRuntime=com.oracle.truffle.api.impl.DefaultTruffleRuntime \ -Dgraalvm.ForcePolyglotInvalid=true \ -Dgraalvm.locatorDisabled=true \ -d64 \ -XX:-UseJVMCIClassLoader \ -XX:+UseJVMCINativeLibrary \ -Xss10m \ -Xms1g \ -Xmx13743895344 \ -Duser.country=US \ -Duser.language=en \ -Dorg.graalvm.version=19.2.1 \ -Dorg.graalvm.config=CE \ -Dcom.oracle.graalvm.isaot=true \ -Djvmci.class.path.append=/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/jvmci/graal.jar \ -Xbootclasspath/a:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/boot/graaljs-scriptengine.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/boot/graal-sdk.jar \ -cp \ /Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/llvm-wrapper.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/svm.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/javacpp.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/objectfile.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/graal-llvm.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/svm-llvm.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/llvm-platform-specific.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/pointsto.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/jvmci/graal.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/jvmci/graal-management.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/jvmci/jvmci-api.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/jvmci/jvmci-hotspot.jar \ com.oracle.svm.hosted.NativeImageGeneratorRunner \ -imagecp \ /Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/boot/graaljs-scriptengine.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/boot/graal-sdk.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/llvm-wrapper.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/svm.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/javacpp.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/objectfile.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/graal-llvm.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/svm-llvm.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/llvm-platform-specific.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/pointsto.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/jvmci/graal.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/jvmci/graal-management.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/jvmci/jvmci-api.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/jvmci/jvmci-hotspot.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/library-support.jar:/Users/avi.flax/.m2/repository/net/incongru/watchservice/barbary-watchservice/1.0/jna-3.2.2.jar:/Users/avi.flax/dev/fc4-framework/tool/classes:/Users/avi.flax/dev/fc4-framework/tool/src/main:/Users/avi.flax/dev/fc4-framework/tool/src/java:/Users/avi.flax/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar:/Users/avi.flax/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar:/Users/avi.flax/.m2/repository/joda-time/joda-time/2.10.3/joda-time-2.10.3.jar:/Users/avi.flax/.m2/repository/commons-codec/commons-codec/1.10/commons-codec-1.10.jar:/Users/avi.flax/.m2/repository/org/clojure/tools.analyzer/0.6.9/tools.analyzer-0.6.9.jar:/Users/avi.flax/.m2/repository/org/eclipse/jetty/jetty-xml/9.4.19.v20190610/jetty-xml-9.4.19.v20190610.jar:/Users/avi.flax/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.7.1/plexus-component-annotations-1.7.1.jar:/Users/avi.flax/.m2/repository/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar:/Users/avi.flax/.m2/repository/org/springframework/build/aws-maven/5.0.0.RELEASE/aws-maven-5.0.0.RELEASE.jar:/Users/avi.flax/.m2/repository/org/clojure/core.specs.alpha/0.2.44/core.specs.alpha-0.2.44.jar:/Users/avi.flax/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.5.5/jackson-databind-2.5.5.jar:/Users/avi.flax/.gitlibs/libs/expound/expound/297e0812eb77ae3aa8f30e823f8bdbbb4650fa28/src:/Users/avi.flax/.m2/repository/org/clojure/spec.alpha/0.2.176/spec.alpha-0.2.176.jar:/Users/avi.flax/.m2/repository/org/clojure/tools.cli/0.4.2/tools.cli-0.4.2.jar:/Users/avi.flax/.m2/repository/org/eclipse/jetty/jetty-http/9.4.19.v20190610/jetty-http-9.4.19.v20190610.jar:/Users/avi.flax/.m2/repository/org/eclipse/jetty/jetty-util/9.4.19.v20190610/jetty-util-9.4.19.v20190610.jar:/Users/avi.flax/.m2/repository/com/taoensso/encore/2.91.0/encore-2.91.0.jar:/Users/avi.flax/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-wagon/1.1.1/maven-resolver-transport-wagon-1.1.1.jar:/Users/avi.flax/.gitlibs/libs/clj-chrome-devtools/clj-chrome-devtools/a1b1b0903ae5ba56eaada8496ed3785a53d8cc06/src:/Users/avi.flax/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25.jar:/Users/avi.flax/.m2/repository/org/clojure/tools.analyzer.jvm/0.7.2/tools.analyzer.jvm-0.7.2.jar:/Users/avi.flax/.m2/repository/com/jcraft/jsch.agentproxy.jsch/0.0.9/jsch.agentproxy.jsch-0.0.9.jar:/Users/avi.flax/.m2/repository/net/incongru/watchservice/barbary-watchservice/1.0/barbary-watchservice-1.0.jar:/Users/avi.flax/.m2/repository/org/apache/maven/wagon/wagon-provider-api/3.0.0/wagon-provider-api-3.0.0.jar:/Users/avi.flax/.m2/repository/com/jcraft/jsch.agentproxy.sshagent/0.0.9/jsch.agentproxy.sshagent-0.0.9.jar:/Users/avi.flax/.m2/repository/org/clojure/tools.macro/0.1.1/tools.macro-0.1.1.jar:/Users/avi.flax/.m2/repository/com/cognitect/anomalies/0.1.12/anomalies-0.1.12.jar:/Users/avi.flax/.m2/repository/com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.9.9/jackson-dataformat-cbor-2.9.9.jar:/Users/avi.flax/.m2/repository/com/gfredericks/test.chuck/0.2.10/test.chuck-0.2.10.jar:/Users/avi.flax/.m2/repository/org/flatland/useful/0.11.6/useful-0.11.6.jar:/Users/avi.flax/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-http/1.1.1/maven-resolver-transport-http-1.1.1.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-model-builder/3.5.2/maven-model-builder-3.5.2.jar:/Users/avi.flax/.m2/repository/io/aviso/pretty/0.1.33/pretty-0.1.33.jar:/Users/avi.flax/.m2/repository/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.jar:/Users/avi.flax/.m2/repository/org/codehaus/plexus/plexus-utils/3.1.0/plexus-utils-3.1.0.jar:/Users/avi.flax/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-file/1.1.1/maven-resolver-transport-file-1.1.1.jar:/Users/avi.flax/.m2/repository/org/eclipse/sisu/org.eclipse.sisu.plexus/0.3.3/org.eclipse.sisu.plexus-0.3.3.jar:/Users/avi.flax/.m2/repository/org/eclipse/jetty/websocket/websocket-api/9.4.19.v20190610/websocket-api-9.4.19.v20190610.jar:/Users/avi.flax/.m2/repository/org/flatland/ordered/1.5.7/ordered-1.5.7.jar:/Users/avi.flax/.m2/repository/com/jcraft/jsch.agentproxy.usocket-jna/0.0.9/jsch.agentproxy.usocket-jna-0.0.9.jar:/Users/avi.flax/.m2/repository/commons-io/commons-io/2.5/commons-io-2.5.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-settings-builder/3.5.2/maven-settings-builder-3.5.2.jar:/Users/avi.flax/.m2/repository/org/clojure/tools.namespace/0.3.1/tools.namespace-0.3.1.jar:/Users/avi.flax/.m2/repository/org/eclipse/jetty/websocket/websocket-client/9.4.19.v20190610/websocket-client-9.4.19.v20190610.jar:/Users/avi.flax/.m2/repository/org/eclipse/jgit/org.eclipse.jgit/4.10.0.201712302008-r/org.eclipse.jgit-4.10.0.201712302008-r.jar:/Users/avi.flax/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.9.9/jackson-core-2.9.9.jar:/Users/avi.flax/.m2/repository/clj-time/clj-time/0.10.0/clj-time-0.10.0.jar:/Users/avi.flax/.m2/repository/org/yaml/snakeyaml/1.24/snakeyaml-1.24.jar:/Users/avi.flax/.m2/repository/javax/enterprise/cdi-api/1.0/cdi-api-1.0.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-settings/3.5.2/maven-settings-3.5.2.jar:/Users/avi.flax/.m2/repository/org/apache/httpcomponents/httpcore/4.4.8/httpcore-4.4.8.jar:/Users/avi.flax/.m2/repository/instaparse/instaparse/1.3.6/instaparse-1.3.6.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-core/3.5.2/maven-core-3.5.2.jar:/Users/avi.flax/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar:/Users/avi.flax/.m2/repository/stylefruits/gniazdo/1.1.2/gniazdo-1.1.2.jar:/Users/avi.flax/.m2/repository/com/taoensso/truss/1.5.0/truss-1.5.0.jar:/Users/avi.flax/.m2/repository/com/jcraft/jsch.agentproxy.pageant/0.0.9/jsch.agentproxy.pageant-0.0.9.jar:/Users/avi.flax/.m2/repository/org/apache/maven/resolver/maven-resolver-api/1.1.1/maven-resolver-api-1.1.1.jar:/Users/avi.flax/.m2/repository/software/amazon/ion/ion-java/1.0.2/ion-java-1.0.2.jar:/Users/avi.flax/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.5.0/jackson-annotations-2.5.0.jar:/Users/avi.flax/.m2/repository/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-resolver-provider/3.5.2/maven-resolver-provider-3.5.2.jar:/Users/avi.flax/.m2/repository/org/apache/maven/shared/maven-shared-utils/3.1.0/maven-shared-utils-3.1.0.jar:/Users/avi.flax/.m2/repository/org/clojure/java.classpath/0.3.0/java.classpath-0.3.0.jar:/Users/avi.flax/.m2/repository/org/clojure/tools.deps.alpha/0.7.549/tools.deps.alpha-0.7.549.jar:/Users/avi.flax/.m2/repository/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar:/Users/avi.flax/.m2/repository/com/google/guava/guava/20.0/guava-20.0.jar:/Users/avi.flax/.m2/repository/org/clojure/data.xml/0.2.0-alpha5/data.xml-0.2.0-alpha5.jar:/Users/avi.flax/.m2/repository/com/amazonaws/jmespath-java/1.11.184/jmespath-java-1.11.184.jar:/Users/avi.flax/.m2/repository/org/apache/maven/resolver/maven-resolver-spi/1.1.1/maven-resolver-spi-1.1.1.jar:/Users/avi.flax/.m2/repository/com/amazonaws/aws-java-sdk-core/1.11.184/aws-java-sdk-core-1.11.184.jar:/Users/avi.flax/.m2/repository/com/taoensso/timbre/4.10.0/timbre-4.10.0.jar:/Users/avi.flax/.m2/repository/org/codehaus/plexus/plexus-classworlds/2.5.2/plexus-classworlds-2.5.2.jar:/Users/avi.flax/.m2/repository/s3-wagon-private/s3-wagon-private/1.3.1/s3-wagon-private-1.3.1.jar:/Users/avi.flax/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.4/plexus-sec-dispatcher-1.4.jar:/Users/avi.flax/.m2/repository/clj-commons/clj-yaml/0.7.0/clj-yaml-0.7.0.jar:/Users/avi.flax/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.24/plexus-interpolation-1.24.jar:/Users/avi.flax/.m2/repository/org/apache/httpcomponents/httpclient/4.5.4/httpclient-4.5.4.jar:/Users/avi.flax/.m2/repository/net/java/dev/jna/jna/5.4.0/jna-5.4.0.jar:/Users/avi.flax/.m2/repository/com/google/inject/guice/4.0/guice-4.0-no_aop.jar:/Users/avi.flax/.m2/repository/cheshire/cheshire/5.9.0/cheshire-5.9.0.jar:/Users/avi.flax/.m2/repository/tigris/tigris/0.1.1/tigris-0.1.1.jar:/Users/avi.flax/.m2/repository/com/jcraft/jsch.agentproxy.connector-factory/0.0.9/jsch.agentproxy.connector-factory-0.0.9.jar:/Users/avi.flax/.m2/repository/org/eclipse/jetty/jetty-client/9.4.19.v20190610/jetty-client-9.4.19.v20190610.jar:/Users/avi.flax/.m2/repository/com/andrewmcveigh/cljs-time/0.5.1/cljs-time-0.5.1.jar:/Users/avi.flax/.m2/repository/org/eclipse/jetty/jetty-io/9.4.19.v20190610/jetty-io-9.4.19.v20190610.jar:/Users/avi.flax/.m2/repository/org/clojure/tools.reader/1.3.2/tools.reader-1.3.2.jar:/Users/avi.flax/.m2/repository/net/java/dev/jna/jna-platform/5.4.0/jna-platform-5.4.0.jar:/Users/avi.flax/.m2/repository/org/clojure/tools.gitlibs/0.2.64/tools.gitlibs-0.2.64.jar:/Users/avi.flax/.m2/repository/org/apache/maven/resolver/maven-resolver-connector-basic/1.1.1/maven-resolver-connector-basic-1.1.1.jar:/Users/avi.flax/.m2/repository/org/apache/maven/resolver/maven-resolver-impl/1.1.1/maven-resolver-impl-1.1.1.jar:/Users/avi.flax/.m2/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-model/3.5.2/maven-model-3.5.2.jar:/Users/avi.flax/.m2/repository/org/clojure/test.check/0.10.0-RC1/test.check-0.10.0-RC1.jar:/Users/avi.flax/.gitlibs/libs/taylorwood/clj.native-image/b3823a48be75122b9671c86ce5353a85589ef15f/src:/Users/avi.flax/.m2/repository/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.3/org.eclipse.sisu.inject-0.3.3.jar:/Users/avi.flax/.m2/repository/org/apache/maven/resolver/maven-resolver-util/1.1.1/maven-resolver-util-1.1.1.jar:/Users/avi.flax/.m2/repository/org/eclipse/jetty/websocket/websocket-common/9.4.19.v20190610/websocket-common-9.4.19.v20190610.jar:/Users/avi.flax/.m2/repository/org/clojure/core.memoize/0.5.9/core.memoize-0.5.9.jar:/Users/avi.flax/.m2/repository/hawk/hawk/0.2.11/hawk-0.2.11.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-repository-metadata/3.5.2/maven-repository-metadata-3.5.2.jar:/Users/avi.flax/.m2/repository/org/clojure/data.priority-map/0.0.7/data.priority-map-0.0.7.jar:/Users/avi.flax/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-builder-support/3.5.2/maven-builder-support-3.5.2.jar:/Users/avi.flax/.m2/repository/com/jcraft/jsch/0.1.54/jsch-0.1.54.jar:/Users/avi.flax/.m2/repository/com/jcraft/jsch.agentproxy.core/0.0.9/jsch.agentproxy.core-0.0.9.jar:/Users/avi.flax/.m2/repository/com/jcraft/jsch.agentproxy.usocket-nc/0.0.9/jsch.agentproxy.usocket-nc-0.0.9.jar:/Users/avi.flax/.m2/repository/org/clojure/core.cache/0.6.5/core.cache-0.6.5.jar:/Users/avi.flax/.m2/repository/org/ow2/asm/asm-all/4.2/asm-all-4.2.jar:/Users/avi.flax/.m2/repository/com/amazonaws/aws-java-sdk-kms/1.11.184/aws-java-sdk-kms-1.11.184.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-plugin-api/3.5.2/maven-plugin-api-3.5.2.jar:/Users/avi.flax/.m2/repository/org/clojure/core.async/0.4.500/core.async-0.4.500.jar:/Users/avi.flax/.m2/repository/com/fasterxml/jackson/dataformat/jackson-dataformat-smile/2.9.9/jackson-dataformat-smile-2.9.9.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-artifact/3.5.2/maven-artifact-3.5.2.jar:/Users/avi.flax/.m2/repository/org/clojure/data.codec/0.1.0/data.codec-0.1.0.jar:/Users/avi.flax/.m2/repository/com/amazonaws/aws-java-sdk-s3/1.11.184/aws-java-sdk-s3-1.11.184.jar:/Users/avi.flax/.m2/repository/http-kit/http-kit/2.3.0/http-kit-2.3.0.jar \ -H:Path=/Users/avi.flax/dev/fc4-framework/tool \ -H:EnableURLProtocols=https \ -H:ClassInitialization=:build_time \ -H:FallbackThreshold=0 \ -H:+AllowIncompleteClasspath \ -H:+ReportUnsupportedElementsAtRuntime \ -H:+StaticExecutable \ -H:Name=target/fc4 \ -H:CLibraryPath=/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/clibraries/darwin-amd64 \ -H:Class=fc4.io.cli.main ] [target/fc4:34859] classlist: 9,504.47 ms [target/fc4:34859] (cap): 2,363.90 ms [target/fc4:34859] setup: 3,561.54 ms [target/fc4:34859] analysis: 102,535.23 ms Error: Unsupported features in 7 methods Detailed message: Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: java.lang.invoke.MethodHandle.bindTo(Object) Trace: at parsing java.lang.invoke.MethodHandleImpl.makePairwiseConvertByEditor(MethodHandleImpl.java:221) Call path from entry point to java.lang.invoke.MethodHandleImpl.makePairwiseConvertByEditor(MethodHandle, MethodType, boolean, boolean): at java.lang.invoke.MethodHandleImpl.makePairwiseConvertByEditor(MethodHandleImpl.java:207) at java.lang.invoke.MethodHandleImpl.makePairwiseConvert(MethodHandleImpl.java:194) at java.lang.invoke.MethodHandleImpl.makePairwiseConvert(MethodHandleImpl.java:380) at java.lang.invoke.MethodHandle.asTypeUncached(MethodHandle.java:776) at java.lang.invoke.MethodHandle.asType(MethodHandle.java:761) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at com.oracle.svm.reflect.MethodHandle_invokeWithArguments_9dda848d0201e4e26c7b3711f56411a6605b9b6f_42.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:498) at clojure.core$bean$fn__7197$fn__7198.invoke(core_proxy.clj:408) at clojure.lang.AFn.run(AFn.java:22) at java.lang.Thread.run(Thread.java:748) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: java.lang.invoke.MethodHandleImpl$BindCaller.prepareForInvoker(MethodHandle) Trace: at parsing java.lang.invoke.MethodHandleImpl$BindCaller.makeInjectedInvoker(MethodHandleImpl.java:1166) Call path from entry point to java.lang.invoke.MethodHandleImpl$BindCaller.makeInjectedInvoker(Class): at java.lang.invoke.MethodHandleImpl$BindCaller.makeInjectedInvoker(MethodHandleImpl.java:1141) at java.lang.invoke.MethodHandleImpl$BindCaller.access$300(MethodHandleImpl.java:1122) at java.lang.invoke.MethodHandleImpl$BindCaller$1.computeValue(MethodHandleImpl.java:1175) at java.lang.invoke.MethodHandleImpl$BindCaller$1.computeValue(MethodHandleImpl.java:1173) at com.oracle.svm.core.jdk.Target_java_lang_ClassValue.get(JavaLangSubstitutions.java:514) at java.lang.invoke.MethodHandleImpl.makeArrayElementAccessor(MethodHandleImpl.java:76) at java.lang.invoke.MethodHandles.arrayElementGetter(MethodHandles.java:1825) at java.lang.invoke.LambdaFormEditor.spreadArgumentsForm(LambdaFormEditor.java:550) at java.lang.invoke.MethodHandle.asSpreader(MethodHandle.java:874) at java.lang.invoke.Invokers.spreadInvoker(Invokers.java:158) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at com.oracle.svm.reflect.MethodHandle_invokeWithArguments_9dda848d0201e4e26c7b3711f56411a6605b9b6f_42.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:498) at clojure.core$bean$fn__7197$fn__7198.invoke(core_proxy.clj:408) at clojure.lang.AFn.run(AFn.java:22) at java.lang.Thread.run(Thread.java:748) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: java.lang.invoke.MethodHandleImpl.buildVarargsArray(MethodHandle, MethodHandle, int) Trace: at parsing java.lang.invoke.MethodHandleImpl.varargsArray(MethodHandleImpl.java:1634) Call path from entry point to java.lang.invoke.MethodHandleImpl.varargsArray(Class, int): at java.lang.invoke.MethodHandleImpl.varargsArray(MethodHandleImpl.java:1611) at java.lang.invoke.MethodHandle.asCollector(MethodHandle.java:999) at java.lang.invoke.MethodHandleImpl$AsVarargsCollector.asTypeUncached(MethodHandleImpl.java:502) at java.lang.invoke.MethodHandle.asType(MethodHandle.java:761) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at com.oracle.svm.reflect.MethodHandle_invokeWithArguments_9dda848d0201e4e26c7b3711f56411a6605b9b6f_42.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:498) at clojure.core$bean$fn__7197$fn__7198.invoke(core_proxy.clj:408) at clojure.lang.AFn.run(AFn.java:22) at java.lang.Thread.run(Thread.java:748) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: No instances of javax.net.ssl.SSLContext are allowed in the image heap as this class should be initialized at image runtime. To see how this object got instantiated use -H:+TraceClassInitialization. Trace: at parsing org.httpkit.client.HttpClient.exec(HttpClient.java:347) Call path from entry point to org.httpkit.client.HttpClient.exec(String, RequestConfig, SSLEngine, IRespListener): at org.httpkit.client.HttpClient.exec(HttpClient.java:269) at org.httpkit.client$request.invokeStatic(client.clj:258) at org.httpkit.client$request.doInvoke(client.clj:152) at clojure.lang.RestFn.applyTo(RestFn.java:139) at fc4.io.cli.main.main(Unknown Source) at com.oracle.svm.core.JavaMainWrapper.runCore(JavaMainWrapper.java:151) at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:186) at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0) Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: No instances of javax.net.ssl.SSLContext are allowed in the image heap as this class should be initialized at image runtime. To see how this object got instantiated use -H:+TraceClassInitialization. Trace: at parsing org.httpkit.client.SslContextFactory.trustAnybody(SslContextFactory.java:36) Call path from entry point to org.httpkit.client.SslContextFactory.trustAnybody(): at org.httpkit.client.SslContextFactory.trustAnybody(SslContextFactory.java:36) at org.httpkit.client$coerce_req.invokeStatic(client.clj:68) at org.httpkit.client$coerce_req.invoke(client.clj:59) at taoensso.encore.proxy$java.util.TimerTask$ff19274a.run(Unknown Source) at java.lang.Thread.run(Thread.java:748) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: type is not available in this platform: com.oracle.svm.hosted.code.CFunctionCallStubMethod Trace: object java.lang.invoke.MethodType object java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry object java.util.concurrent.ConcurrentHashMap$Node object java.util.concurrent.ConcurrentHashMap$Node[] object java.util.concurrent.ConcurrentHashMap object java.lang.invoke.MethodType$ConcurrentWeakInternSet method java.lang.invoke.MethodType.makeImpl(Class, Class[], boolean) Call path from entry point to java.lang.invoke.MethodType.makeImpl(Class, Class[], boolean): at java.lang.invoke.MethodType.makeImpl(MethodType.java:301) at java.lang.invoke.MethodType.methodType(MethodType.java:206) at com.oracle.svm.reflect.MethodType_methodType_9d13644056a712f9cdb73fb2ef8b26f65294abe9_37.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:498) at clojure.core$bean$fn__7197$fn__7198.invoke(core_proxy.clj:408) at clojure.lang.AFn.run(AFn.java:22) at java.lang.Thread.run(Thread.java:748) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: type is not available in this platform: org.graalvm.nativeimage.hosted.Feature$BeforeAnalysisAccess Trace: object java.lang.Class[] object java.lang.invoke.MethodType object java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry object java.util.concurrent.ConcurrentHashMap$Node object java.util.concurrent.ConcurrentHashMap$Node[] object java.util.concurrent.ConcurrentHashMap object java.lang.invoke.MethodType$ConcurrentWeakInternSet method java.lang.invoke.MethodType.makeImpl(Class, Class[], boolean) Call path from entry point to java.lang.invoke.MethodType.makeImpl(Class, Class[], boolean): at java.lang.invoke.MethodType.makeImpl(MethodType.java:301) at java.lang.invoke.MethodType.methodType(MethodType.java:206) at com.oracle.svm.reflect.MethodType_methodType_9d13644056a712f9cdb73fb2ef8b26f65294abe9_37.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:498) at clojure.core$bean$fn__7197$fn__7198.invoke(core_proxy.clj:408) at clojure.lang.AFn.run(AFn.java:22) at java.lang.Thread.run(Thread.java:748) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: Use -H:+ReportExceptionStackTraces to print stacktrace of underlying exception Error: Image build request failed with exit status 1 com.oracle.svm.driver.NativeImage$NativeImageError: Image build request failed with exit status 1 at com.oracle.svm.driver.NativeImage.showError(NativeImage.java:1447) at com.oracle.svm.driver.NativeImage.build(NativeImage.java:1225) at com.oracle.svm.driver.NativeImage.performBuild(NativeImage.java:1187) at com.oracle.svm.driver.NativeImage.main(NativeImage.java:1146) ```

This is from https://github.com/FundingCircle/fc4-framework/commit/f76b856314d480cf68692f61a08e8934fee663c3 which is currently HEAD of native-image.

aviflax commented 4 years ago

Update:

I perused https://github.com/oracle/graal/issues/1074 and then added --initialize-at-run-time=org.httpkit.client to my :main-opts — this eliminated the two error messages related to javax.net.ssl.SSLContext.

Now I’m getting Error: Unsupported features in 5 methods so that’s more progress!

Verbose Output ```text $ bin/pkg-native Compiling fc4.io.cli.main Reflection warning, clj_chrome_devtools/automation.clj:61:5 - reference to field close on java.lang.Object can't be resolved. Compiling fc4.files Compiling fc4.image-utils Compiling fc4.integrations.structurizr.express.chromium-renderer Compiling fc4.integrations.structurizr.express.export Compiling fc4.integrations.structurizr.express.format Compiling fc4.integrations.structurizr.express.snap Compiling fc4.integrations.structurizr.express.spec Compiling fc4.integrations.structurizr.express.yaml Compiling fc4.io.cli.main Compiling fc4.io.cli.util Compiling fc4.io.dsl Compiling fc4.io.render Compiling fc4.io.util Compiling fc4.io.watch Compiling fc4.io.yaml Compiling fc4.model Compiling fc4.rendering Compiling fc4.spec Compiling fc4.styles Compiling fc4.util Compiling fc4.view Compiling fc4.yaml Warning: Invalid classpath entry: /Users/avi.flax/.m2/repository/net/incongru/watchservice/barbary-watchservice/1.0/jna-3.2.2.jar Executing [ /Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/bin/java \ -XX:+UnlockExperimentalVMOptions \ -XX:+EnableJVMCI \ -Dtruffle.TrustAllTruffleRuntimeProviders=true \ -Dtruffle.TruffleRuntime=com.oracle.truffle.api.impl.DefaultTruffleRuntime \ -Dgraalvm.ForcePolyglotInvalid=true \ -Dgraalvm.locatorDisabled=true \ -d64 \ -XX:-UseJVMCIClassLoader \ -XX:+UseJVMCINativeLibrary \ -Xss10m \ -Xms1g \ -Xmx13743895344 \ -Duser.country=US \ -Duser.language=en \ -Dorg.graalvm.version=19.2.1 \ -Dorg.graalvm.config=CE \ -Dcom.oracle.graalvm.isaot=true \ -Djvmci.class.path.append=/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/jvmci/graal.jar \ -Xbootclasspath/a:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/boot/graaljs-scriptengine.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/boot/graal-sdk.jar \ -cp \ /Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/llvm-wrapper.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/svm.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/javacpp.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/objectfile.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/graal-llvm.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/svm-llvm.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/llvm-platform-specific.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/pointsto.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/jvmci/graal.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/jvmci/graal-management.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/jvmci/jvmci-api.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/jvmci/jvmci-hotspot.jar \ com.oracle.svm.hosted.NativeImageGeneratorRunner \ -imagecp \ /Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/boot/graaljs-scriptengine.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/boot/graal-sdk.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/llvm-wrapper.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/svm.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/javacpp.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/objectfile.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/graal-llvm.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/svm-llvm.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/llvm-platform-specific.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/builder/pointsto.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/jvmci/graal.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/jvmci/graal-management.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/jvmci/jvmci-api.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/jvmci/jvmci-hotspot.jar:/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/library-support.jar:/Users/avi.flax/.m2/repository/net/incongru/watchservice/barbary-watchservice/1.0/jna-3.2.2.jar:/Users/avi.flax/dev/fc4-framework/tool/classes:/Users/avi.flax/dev/fc4-framework/tool/src/main:/Users/avi.flax/dev/fc4-framework/tool/src/java:/Users/avi.flax/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar:/Users/avi.flax/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar:/Users/avi.flax/.m2/repository/joda-time/joda-time/2.10.3/joda-time-2.10.3.jar:/Users/avi.flax/.m2/repository/commons-codec/commons-codec/1.10/commons-codec-1.10.jar:/Users/avi.flax/.m2/repository/org/clojure/tools.analyzer/0.6.9/tools.analyzer-0.6.9.jar:/Users/avi.flax/.m2/repository/org/eclipse/jetty/jetty-xml/9.4.19.v20190610/jetty-xml-9.4.19.v20190610.jar:/Users/avi.flax/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.7.1/plexus-component-annotations-1.7.1.jar:/Users/avi.flax/.m2/repository/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar:/Users/avi.flax/.m2/repository/org/springframework/build/aws-maven/5.0.0.RELEASE/aws-maven-5.0.0.RELEASE.jar:/Users/avi.flax/.m2/repository/org/clojure/core.specs.alpha/0.2.44/core.specs.alpha-0.2.44.jar:/Users/avi.flax/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.5.5/jackson-databind-2.5.5.jar:/Users/avi.flax/.gitlibs/libs/expound/expound/297e0812eb77ae3aa8f30e823f8bdbbb4650fa28/src:/Users/avi.flax/.m2/repository/org/clojure/spec.alpha/0.2.176/spec.alpha-0.2.176.jar:/Users/avi.flax/.m2/repository/org/clojure/tools.cli/0.4.2/tools.cli-0.4.2.jar:/Users/avi.flax/.m2/repository/org/eclipse/jetty/jetty-http/9.4.19.v20190610/jetty-http-9.4.19.v20190610.jar:/Users/avi.flax/.m2/repository/org/eclipse/jetty/jetty-util/9.4.19.v20190610/jetty-util-9.4.19.v20190610.jar:/Users/avi.flax/.m2/repository/com/taoensso/encore/2.91.0/encore-2.91.0.jar:/Users/avi.flax/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-wagon/1.1.1/maven-resolver-transport-wagon-1.1.1.jar:/Users/avi.flax/.gitlibs/libs/clj-chrome-devtools/clj-chrome-devtools/a1b1b0903ae5ba56eaada8496ed3785a53d8cc06/src:/Users/avi.flax/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25.jar:/Users/avi.flax/.m2/repository/org/clojure/tools.analyzer.jvm/0.7.2/tools.analyzer.jvm-0.7.2.jar:/Users/avi.flax/.m2/repository/com/jcraft/jsch.agentproxy.jsch/0.0.9/jsch.agentproxy.jsch-0.0.9.jar:/Users/avi.flax/.m2/repository/net/incongru/watchservice/barbary-watchservice/1.0/barbary-watchservice-1.0.jar:/Users/avi.flax/.m2/repository/org/apache/maven/wagon/wagon-provider-api/3.0.0/wagon-provider-api-3.0.0.jar:/Users/avi.flax/.m2/repository/com/jcraft/jsch.agentproxy.sshagent/0.0.9/jsch.agentproxy.sshagent-0.0.9.jar:/Users/avi.flax/.m2/repository/org/clojure/tools.macro/0.1.1/tools.macro-0.1.1.jar:/Users/avi.flax/.m2/repository/com/cognitect/anomalies/0.1.12/anomalies-0.1.12.jar:/Users/avi.flax/.m2/repository/com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.9.9/jackson-dataformat-cbor-2.9.9.jar:/Users/avi.flax/.m2/repository/com/gfredericks/test.chuck/0.2.10/test.chuck-0.2.10.jar:/Users/avi.flax/.m2/repository/org/flatland/useful/0.11.6/useful-0.11.6.jar:/Users/avi.flax/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-http/1.1.1/maven-resolver-transport-http-1.1.1.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-model-builder/3.5.2/maven-model-builder-3.5.2.jar:/Users/avi.flax/.m2/repository/io/aviso/pretty/0.1.33/pretty-0.1.33.jar:/Users/avi.flax/.m2/repository/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.jar:/Users/avi.flax/.m2/repository/org/codehaus/plexus/plexus-utils/3.1.0/plexus-utils-3.1.0.jar:/Users/avi.flax/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-file/1.1.1/maven-resolver-transport-file-1.1.1.jar:/Users/avi.flax/.m2/repository/org/eclipse/sisu/org.eclipse.sisu.plexus/0.3.3/org.eclipse.sisu.plexus-0.3.3.jar:/Users/avi.flax/.m2/repository/org/eclipse/jetty/websocket/websocket-api/9.4.19.v20190610/websocket-api-9.4.19.v20190610.jar:/Users/avi.flax/.m2/repository/org/flatland/ordered/1.5.7/ordered-1.5.7.jar:/Users/avi.flax/.m2/repository/com/jcraft/jsch.agentproxy.usocket-jna/0.0.9/jsch.agentproxy.usocket-jna-0.0.9.jar:/Users/avi.flax/.m2/repository/commons-io/commons-io/2.5/commons-io-2.5.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-settings-builder/3.5.2/maven-settings-builder-3.5.2.jar:/Users/avi.flax/.m2/repository/org/clojure/tools.namespace/0.3.1/tools.namespace-0.3.1.jar:/Users/avi.flax/.m2/repository/org/eclipse/jetty/websocket/websocket-client/9.4.19.v20190610/websocket-client-9.4.19.v20190610.jar:/Users/avi.flax/.m2/repository/org/eclipse/jgit/org.eclipse.jgit/4.10.0.201712302008-r/org.eclipse.jgit-4.10.0.201712302008-r.jar:/Users/avi.flax/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.9.9/jackson-core-2.9.9.jar:/Users/avi.flax/.m2/repository/clj-time/clj-time/0.10.0/clj-time-0.10.0.jar:/Users/avi.flax/.m2/repository/org/yaml/snakeyaml/1.24/snakeyaml-1.24.jar:/Users/avi.flax/.m2/repository/javax/enterprise/cdi-api/1.0/cdi-api-1.0.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-settings/3.5.2/maven-settings-3.5.2.jar:/Users/avi.flax/.m2/repository/org/apache/httpcomponents/httpcore/4.4.8/httpcore-4.4.8.jar:/Users/avi.flax/.m2/repository/instaparse/instaparse/1.3.6/instaparse-1.3.6.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-core/3.5.2/maven-core-3.5.2.jar:/Users/avi.flax/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar:/Users/avi.flax/.m2/repository/stylefruits/gniazdo/1.1.2/gniazdo-1.1.2.jar:/Users/avi.flax/.m2/repository/com/taoensso/truss/1.5.0/truss-1.5.0.jar:/Users/avi.flax/.m2/repository/com/jcraft/jsch.agentproxy.pageant/0.0.9/jsch.agentproxy.pageant-0.0.9.jar:/Users/avi.flax/.m2/repository/org/apache/maven/resolver/maven-resolver-api/1.1.1/maven-resolver-api-1.1.1.jar:/Users/avi.flax/.m2/repository/software/amazon/ion/ion-java/1.0.2/ion-java-1.0.2.jar:/Users/avi.flax/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.5.0/jackson-annotations-2.5.0.jar:/Users/avi.flax/.m2/repository/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-resolver-provider/3.5.2/maven-resolver-provider-3.5.2.jar:/Users/avi.flax/.m2/repository/org/apache/maven/shared/maven-shared-utils/3.1.0/maven-shared-utils-3.1.0.jar:/Users/avi.flax/.m2/repository/org/clojure/java.classpath/0.3.0/java.classpath-0.3.0.jar:/Users/avi.flax/.m2/repository/org/clojure/tools.deps.alpha/0.7.549/tools.deps.alpha-0.7.549.jar:/Users/avi.flax/.m2/repository/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar:/Users/avi.flax/.m2/repository/com/google/guava/guava/20.0/guava-20.0.jar:/Users/avi.flax/.m2/repository/org/clojure/data.xml/0.2.0-alpha5/data.xml-0.2.0-alpha5.jar:/Users/avi.flax/.m2/repository/com/amazonaws/jmespath-java/1.11.184/jmespath-java-1.11.184.jar:/Users/avi.flax/.m2/repository/org/apache/maven/resolver/maven-resolver-spi/1.1.1/maven-resolver-spi-1.1.1.jar:/Users/avi.flax/.m2/repository/com/amazonaws/aws-java-sdk-core/1.11.184/aws-java-sdk-core-1.11.184.jar:/Users/avi.flax/.m2/repository/com/taoensso/timbre/4.10.0/timbre-4.10.0.jar:/Users/avi.flax/.m2/repository/org/codehaus/plexus/plexus-classworlds/2.5.2/plexus-classworlds-2.5.2.jar:/Users/avi.flax/.m2/repository/s3-wagon-private/s3-wagon-private/1.3.1/s3-wagon-private-1.3.1.jar:/Users/avi.flax/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.4/plexus-sec-dispatcher-1.4.jar:/Users/avi.flax/.m2/repository/clj-commons/clj-yaml/0.7.0/clj-yaml-0.7.0.jar:/Users/avi.flax/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.24/plexus-interpolation-1.24.jar:/Users/avi.flax/.m2/repository/org/apache/httpcomponents/httpclient/4.5.4/httpclient-4.5.4.jar:/Users/avi.flax/.m2/repository/net/java/dev/jna/jna/5.4.0/jna-5.4.0.jar:/Users/avi.flax/.m2/repository/com/google/inject/guice/4.0/guice-4.0-no_aop.jar:/Users/avi.flax/.m2/repository/cheshire/cheshire/5.9.0/cheshire-5.9.0.jar:/Users/avi.flax/.m2/repository/tigris/tigris/0.1.1/tigris-0.1.1.jar:/Users/avi.flax/.m2/repository/com/jcraft/jsch.agentproxy.connector-factory/0.0.9/jsch.agentproxy.connector-factory-0.0.9.jar:/Users/avi.flax/.m2/repository/org/eclipse/jetty/jetty-client/9.4.19.v20190610/jetty-client-9.4.19.v20190610.jar:/Users/avi.flax/.m2/repository/com/andrewmcveigh/cljs-time/0.5.1/cljs-time-0.5.1.jar:/Users/avi.flax/.m2/repository/org/eclipse/jetty/jetty-io/9.4.19.v20190610/jetty-io-9.4.19.v20190610.jar:/Users/avi.flax/.m2/repository/org/clojure/tools.reader/1.3.2/tools.reader-1.3.2.jar:/Users/avi.flax/.m2/repository/net/java/dev/jna/jna-platform/5.4.0/jna-platform-5.4.0.jar:/Users/avi.flax/.m2/repository/org/clojure/tools.gitlibs/0.2.64/tools.gitlibs-0.2.64.jar:/Users/avi.flax/.m2/repository/org/apache/maven/resolver/maven-resolver-connector-basic/1.1.1/maven-resolver-connector-basic-1.1.1.jar:/Users/avi.flax/.m2/repository/org/apache/maven/resolver/maven-resolver-impl/1.1.1/maven-resolver-impl-1.1.1.jar:/Users/avi.flax/.m2/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-model/3.5.2/maven-model-3.5.2.jar:/Users/avi.flax/.m2/repository/org/clojure/test.check/0.10.0-RC1/test.check-0.10.0-RC1.jar:/Users/avi.flax/.gitlibs/libs/taylorwood/clj.native-image/b3823a48be75122b9671c86ce5353a85589ef15f/src:/Users/avi.flax/.m2/repository/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.3/org.eclipse.sisu.inject-0.3.3.jar:/Users/avi.flax/.m2/repository/org/apache/maven/resolver/maven-resolver-util/1.1.1/maven-resolver-util-1.1.1.jar:/Users/avi.flax/.m2/repository/org/eclipse/jetty/websocket/websocket-common/9.4.19.v20190610/websocket-common-9.4.19.v20190610.jar:/Users/avi.flax/.m2/repository/org/clojure/core.memoize/0.5.9/core.memoize-0.5.9.jar:/Users/avi.flax/.m2/repository/hawk/hawk/0.2.11/hawk-0.2.11.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-repository-metadata/3.5.2/maven-repository-metadata-3.5.2.jar:/Users/avi.flax/.m2/repository/org/clojure/data.priority-map/0.0.7/data.priority-map-0.0.7.jar:/Users/avi.flax/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-builder-support/3.5.2/maven-builder-support-3.5.2.jar:/Users/avi.flax/.m2/repository/com/jcraft/jsch/0.1.54/jsch-0.1.54.jar:/Users/avi.flax/.m2/repository/com/jcraft/jsch.agentproxy.core/0.0.9/jsch.agentproxy.core-0.0.9.jar:/Users/avi.flax/.m2/repository/com/jcraft/jsch.agentproxy.usocket-nc/0.0.9/jsch.agentproxy.usocket-nc-0.0.9.jar:/Users/avi.flax/.m2/repository/org/clojure/core.cache/0.6.5/core.cache-0.6.5.jar:/Users/avi.flax/.m2/repository/org/ow2/asm/asm-all/4.2/asm-all-4.2.jar:/Users/avi.flax/.m2/repository/com/amazonaws/aws-java-sdk-kms/1.11.184/aws-java-sdk-kms-1.11.184.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-plugin-api/3.5.2/maven-plugin-api-3.5.2.jar:/Users/avi.flax/.m2/repository/org/clojure/core.async/0.4.500/core.async-0.4.500.jar:/Users/avi.flax/.m2/repository/com/fasterxml/jackson/dataformat/jackson-dataformat-smile/2.9.9/jackson-dataformat-smile-2.9.9.jar:/Users/avi.flax/.m2/repository/org/apache/maven/maven-artifact/3.5.2/maven-artifact-3.5.2.jar:/Users/avi.flax/.m2/repository/org/clojure/data.codec/0.1.0/data.codec-0.1.0.jar:/Users/avi.flax/.m2/repository/com/amazonaws/aws-java-sdk-s3/1.11.184/aws-java-sdk-s3-1.11.184.jar:/Users/avi.flax/.m2/repository/http-kit/http-kit/2.3.0/http-kit-2.3.0.jar \ -H:Path=/Users/avi.flax/dev/fc4-framework/tool \ -H:EnableURLProtocols=https \ -H:EnableURLProtocols=http,https \ -H:ClassInitialization=:build_time \ -H:ClassInitialization=org.httpkit.client:run_time \ -H:FallbackThreshold=0 \ -H:+AllowIncompleteClasspath \ -H:+ReportUnsupportedElementsAtRuntime \ -H:+StaticExecutable \ -H:Name=target/fc4 \ -H:CLibraryPath=/Library/Java/JavaVirtualMachines/graalvm-ce-19.2.1/Contents/Home/jre/lib/svm/clibraries/darwin-amd64 \ -H:Class=fc4.io.cli.main ] [target/fc4:38671] classlist: 10,130.56 ms [target/fc4:38671] (cap): 2,358.91 ms [target/fc4:38671] setup: 3,665.69 ms [target/fc4:38671] analysis: 91,185.10 ms Error: Unsupported features in 5 methods Detailed message: Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: java.lang.invoke.MethodHandle.bindTo(Object) Trace: at parsing java.lang.invoke.MethodHandleImpl.makePairwiseConvertByEditor(MethodHandleImpl.java:221) Call path from entry point to java.lang.invoke.MethodHandleImpl.makePairwiseConvertByEditor(MethodHandle, MethodType, boolean, boolean): at java.lang.invoke.MethodHandleImpl.makePairwiseConvertByEditor(MethodHandleImpl.java:207) at java.lang.invoke.MethodHandleImpl.makePairwiseConvert(MethodHandleImpl.java:194) at java.lang.invoke.MethodHandleImpl.makePairwiseConvert(MethodHandleImpl.java:380) at java.lang.invoke.MethodHandle.asTypeUncached(MethodHandle.java:776) at java.lang.invoke.MethodHandle.asType(MethodHandle.java:761) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at com.oracle.svm.reflect.MethodHandle_invokeWithArguments_9dda848d0201e4e26c7b3711f56411a6605b9b6f_30.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:498) at clojure.core$bean$fn__7197$fn__7198.invoke(core_proxy.clj:408) at clojure.lang.AFn.run(AFn.java:22) at java.lang.Thread.run(Thread.java:748) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: java.lang.invoke.MethodHandleImpl$BindCaller.prepareForInvoker(MethodHandle) Trace: at parsing java.lang.invoke.MethodHandleImpl$BindCaller.makeInjectedInvoker(MethodHandleImpl.java:1166) Call path from entry point to java.lang.invoke.MethodHandleImpl$BindCaller.makeInjectedInvoker(Class): at java.lang.invoke.MethodHandleImpl$BindCaller.makeInjectedInvoker(MethodHandleImpl.java:1141) at java.lang.invoke.MethodHandleImpl$BindCaller.access$300(MethodHandleImpl.java:1122) at java.lang.invoke.MethodHandleImpl$BindCaller$1.computeValue(MethodHandleImpl.java:1175) at java.lang.invoke.MethodHandleImpl$BindCaller$1.computeValue(MethodHandleImpl.java:1173) at com.oracle.svm.core.jdk.Target_java_lang_ClassValue.get(JavaLangSubstitutions.java:514) at java.lang.invoke.MethodHandleImpl.makeArrayElementAccessor(MethodHandleImpl.java:76) at java.lang.invoke.MethodHandles.arrayElementGetter(MethodHandles.java:1825) at java.lang.invoke.LambdaFormEditor.spreadArgumentsForm(LambdaFormEditor.java:550) at java.lang.invoke.MethodHandle.asSpreader(MethodHandle.java:874) at java.lang.invoke.Invokers.spreadInvoker(Invokers.java:158) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at com.oracle.svm.reflect.MethodHandle_invokeWithArguments_9dda848d0201e4e26c7b3711f56411a6605b9b6f_30.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:498) at clojure.core$bean$fn__7197$fn__7198.invoke(core_proxy.clj:408) at clojure.lang.AFn.run(AFn.java:22) at java.lang.Thread.run(Thread.java:748) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: java.lang.invoke.MethodHandleImpl.buildVarargsArray(MethodHandle, MethodHandle, int) Trace: at parsing java.lang.invoke.MethodHandleImpl.varargsArray(MethodHandleImpl.java:1634) Call path from entry point to java.lang.invoke.MethodHandleImpl.varargsArray(Class, int): at java.lang.invoke.MethodHandleImpl.varargsArray(MethodHandleImpl.java:1611) at java.lang.invoke.MethodHandle.asCollector(MethodHandle.java:999) at java.lang.invoke.MethodHandleImpl$AsVarargsCollector.asTypeUncached(MethodHandleImpl.java:502) at java.lang.invoke.MethodHandle.asType(MethodHandle.java:761) at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627) at com.oracle.svm.reflect.MethodHandle_invokeWithArguments_9dda848d0201e4e26c7b3711f56411a6605b9b6f_30.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:498) at clojure.core$bean$fn__7197$fn__7198.invoke(core_proxy.clj:408) at clojure.lang.AFn.run(AFn.java:22) at java.lang.Thread.run(Thread.java:748) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: type is not available in this platform: com.oracle.svm.hosted.cenum.CEnumCallWrapperMethod Trace: object java.lang.invoke.MethodType object java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry object java.util.concurrent.ConcurrentHashMap$Node object java.util.concurrent.ConcurrentHashMap$Node[] object java.util.concurrent.ConcurrentHashMap object java.lang.invoke.MethodType$ConcurrentWeakInternSet method java.lang.invoke.MethodType.makeImpl(Class, Class[], boolean) Call path from entry point to java.lang.invoke.MethodType.makeImpl(Class, Class[], boolean): at java.lang.invoke.MethodType.makeImpl(MethodType.java:301) at java.lang.invoke.MethodType.methodType(MethodType.java:206) at com.oracle.svm.reflect.MethodType_methodType_9d13644056a712f9cdb73fb2ef8b26f65294abe9_38.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:498) at clojure.core$bean$fn__7197$fn__7198.invoke(core_proxy.clj:408) at clojure.lang.AFn.run(AFn.java:22) at java.lang.Thread.run(Thread.java:748) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: type is not available in this platform: org.graalvm.nativeimage.hosted.Feature$BeforeAnalysisAccess Trace: object java.lang.Class[] object java.lang.invoke.MethodType object java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry object java.util.concurrent.ConcurrentHashMap$Node object java.util.concurrent.ConcurrentHashMap$Node[] object java.util.concurrent.ConcurrentHashMap object java.lang.invoke.MethodType$ConcurrentWeakInternSet method java.lang.invoke.MethodType.makeImpl(Class, Class[], boolean) Call path from entry point to java.lang.invoke.MethodType.makeImpl(Class, Class[], boolean): at java.lang.invoke.MethodType.makeImpl(MethodType.java:301) at java.lang.invoke.MethodType.methodType(MethodType.java:206) at com.oracle.svm.reflect.MethodType_methodType_9d13644056a712f9cdb73fb2ef8b26f65294abe9_38.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Method.java:498) at clojure.core$bean$fn__7197$fn__7198.invoke(core_proxy.clj:408) at clojure.lang.AFn.run(AFn.java:22) at java.lang.Thread.run(Thread.java:748) at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:460) at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:193) at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0) Error: Use -H:+ReportExceptionStackTraces to print stacktrace of underlying exception Error: Image build request failed with exit status 1 com.oracle.svm.driver.NativeImage$NativeImageError: Image build request failed with exit status 1 at com.oracle.svm.driver.NativeImage.showError(NativeImage.java:1447) at com.oracle.svm.driver.NativeImage.build(NativeImage.java:1225) at com.oracle.svm.driver.NativeImage.performBuild(NativeImage.java:1187) at com.oracle.svm.driver.NativeImage.main(NativeImage.java:1146) ```

commit: https://github.com/FundingCircle/fc4-framework/commit/80248616bc5f4076c4f9dd351b202d7ce5219bb0

taylorwood commented 4 years ago

I was able to build your branch with Clojure 1.10.1 on the GraalVM 19.2.1 Docker image:

Compiling fc4.io.cli.main
Reflection warning, clj_chrome_devtools/automation.clj:61:5 - reference to field close on java.lang.Object can't be resolved.
Compiling fc4.files
Compiling fc4.image-utils
Compiling fc4.integrations.structurizr.express.chromium-renderer
Compiling fc4.integrations.structurizr.express.export
Compiling fc4.integrations.structurizr.express.format
Compiling fc4.integrations.structurizr.express.snap
Compiling fc4.integrations.structurizr.express.spec
Compiling fc4.integrations.structurizr.express.yaml
Compiling fc4.io.cli.main
Compiling fc4.io.cli.util
Compiling fc4.io.dsl
Compiling fc4.io.render
Compiling fc4.io.util
Compiling fc4.io.watch
Compiling fc4.io.yaml
Compiling fc4.model
Compiling fc4.rendering
Compiling fc4.spec
Compiling fc4.styles
Compiling fc4.util
Compiling fc4.view
Compiling fc4.yaml
Warning: Invalid classpath entry: /root/.m2/repository/net/incongru/watchservice/barbary-watchservice/1.0/jna-3.2.2.jar
Executing [
/opt/graalvm-ce-19.2.1/jre/bin/java \
-XX:+UnlockExperimentalVMOptions \
-XX:+EnableJVMCI \
-Dtruffle.TrustAllTruffleRuntimeProviders=true \
-Dtruffle.TruffleRuntime=com.oracle.truffle.api.impl.DefaultTruffleRuntime \
-Dgraalvm.ForcePolyglotInvalid=true \
-Dgraalvm.locatorDisabled=true \
-d64 \
-XX:-UseJVMCIClassLoader \
-XX:+UseJVMCINativeLibrary \
-Xss10m \
-Xms1g \
-Xmx4997247792 \
-Duser.country=US \
-Duser.language=en \
-Dorg.graalvm.version=19.2.1 \
-Dorg.graalvm.config=CE \
-Dcom.oracle.graalvm.isaot=true \
-Djvmci.class.path.append=/opt/graalvm-ce-19.2.1/jre/lib/jvmci/graal.jar \
-Xbootclasspath/a:/opt/graalvm-ce-19.2.1/jre/lib/boot/graal-sdk.jar:/opt/graalvm-ce-19.2.1/jre/lib/boot/graaljs-scriptengine.jar \
-cp \
/opt/graalvm-ce-19.2.1/jre/lib/svm/builder/llvm-platform-specific.jar:/opt/graalvm-ce-19.2.1/jre/lib/svm/builder/svm.jar:/opt/graalvm-ce-19.2.1/jre/lib/svm/builder/llvm-wrapper.jar:/opt/graalvm-ce-19.2.1/jre/lib/svm/builder/objectfile.jar:/opt/graalvm-ce-19.2.1/jre/lib/svm/builder/graal-llvm.jar:/opt/graalvm-ce-19.2.1/jre/lib/svm/builder/javacpp.jar:/opt/graalvm-ce-19.2.1/jre/lib/svm/builder/svm-llvm.jar:/opt/graalvm-ce-19.2.1/jre/lib/svm/builder/pointsto.jar:/opt/graalvm-ce-19.2.1/jre/lib/jvmci/jvmci-api.jar:/opt/graalvm-ce-19.2.1/jre/lib/jvmci/graal.jar:/opt/graalvm-ce-19.2.1/jre/lib/jvmci/graal-management.jar:/opt/graalvm-ce-19.2.1/jre/lib/jvmci/jvmci-hotspot.jar \
com.oracle.svm.hosted.NativeImageGeneratorRunner \
-watchpid \
153 \
-imagecp \
/opt/graalvm-ce-19.2.1/jre/lib/boot/graal-sdk.jar:/opt/graalvm-ce-19.2.1/jre/lib/boot/graaljs-scriptengine.jar:/opt/graalvm-ce-19.2.1/jre/lib/svm/builder/llvm-platform-specific.jar:/opt/graalvm-ce-19.2.1/jre/lib/svm/builder/svm.jar:/opt/graalvm-ce-19.2.1/jre/lib/svm/builder/llvm-wrapper.jar:/opt/graalvm-ce-19.2.1/jre/lib/svm/builder/objectfile.jar:/opt/graalvm-ce-19.2.1/jre/lib/svm/builder/graal-llvm.jar:/opt/graalvm-ce-19.2.1/jre/lib/svm/builder/javacpp.jar:/opt/graalvm-ce-19.2.1/jre/lib/svm/builder/svm-llvm.jar:/opt/graalvm-ce-19.2.1/jre/lib/svm/builder/pointsto.jar:/opt/graalvm-ce-19.2.1/jre/lib/jvmci/jvmci-api.jar:/opt/graalvm-ce-19.2.1/jre/lib/jvmci/graal.jar:/opt/graalvm-ce-19.2.1/jre/lib/jvmci/graal-management.jar:/opt/graalvm-ce-19.2.1/jre/lib/jvmci/jvmci-hotspot.jar:/opt/graalvm-ce-19.2.1/jre/lib/svm/library-support.jar:/root/.m2/repository/net/incongru/watchservice/barbary-watchservice/1.0/jna-3.2.2.jar:/code/fc4-framework/tool/classes:/code/fc4-framework/tool/src/main:/code/fc4-framework/tool/src/java:/root/.m2/repository/javax/inject/javax.inject/1/javax.inject-1.jar:/root/.m2/repository/org/clojure/clojure/1.10.1/clojure-1.10.1.jar:/root/.m2/repository/joda-time/joda-time/2.10.3/joda-time-2.10.3.jar:/root/.m2/repository/commons-codec/commons-codec/1.10/commons-codec-1.10.jar:/root/.m2/repository/org/clojure/tools.analyzer/0.6.9/tools.analyzer-0.6.9.jar:/root/.m2/repository/org/eclipse/jetty/jetty-xml/9.4.19.v20190610/jetty-xml-9.4.19.v20190610.jar:/root/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.7.1/plexus-component-annotations-1.7.1.jar:/root/.m2/repository/org/apache/commons/commons-lang3/3.5/commons-lang3-3.5.jar:/root/.m2/repository/org/springframework/build/aws-maven/5.0.0.RELEASE/aws-maven-5.0.0.RELEASE.jar:/root/.m2/repository/org/clojure/core.specs.alpha/0.2.44/core.specs.alpha-0.2.44.jar:/root/.m2/repository/com/fasterxml/jackson/core/jackson-databind/2.5.5/jackson-databind-2.5.5.jar:/root/.gitlibs/libs/expound/expound/297e0812eb77ae3aa8f30e823f8bdbbb4650fa28/src:/root/.m2/repository/org/clojure/spec.alpha/0.2.176/spec.alpha-0.2.176.jar:/root/.m2/repository/org/clojure/tools.cli/0.4.2/tools.cli-0.4.2.jar:/root/.m2/repository/org/eclipse/jetty/jetty-http/9.4.19.v20190610/jetty-http-9.4.19.v20190610.jar:/root/.m2/repository/org/eclipse/jetty/jetty-util/9.4.19.v20190610/jetty-util-9.4.19.v20190610.jar:/root/.m2/repository/com/taoensso/encore/2.91.0/encore-2.91.0.jar:/root/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-wagon/1.1.1/maven-resolver-transport-wagon-1.1.1.jar:/root/.gitlibs/libs/clj-chrome-devtools/clj-chrome-devtools/a1b1b0903ae5ba56eaada8496ed3785a53d8cc06/src:/root/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25.jar:/root/.m2/repository/org/clojure/tools.analyzer.jvm/0.7.2/tools.analyzer.jvm-0.7.2.jar:/root/.m2/repository/com/jcraft/jsch.agentproxy.jsch/0.0.9/jsch.agentproxy.jsch-0.0.9.jar:/root/.m2/repository/net/incongru/watchservice/barbary-watchservice/1.0/barbary-watchservice-1.0.jar:/root/.m2/repository/org/apache/maven/wagon/wagon-provider-api/3.0.0/wagon-provider-api-3.0.0.jar:/root/.m2/repository/com/jcraft/jsch.agentproxy.sshagent/0.0.9/jsch.agentproxy.sshagent-0.0.9.jar:/root/.m2/repository/org/clojure/tools.macro/0.1.1/tools.macro-0.1.1.jar:/root/.m2/repository/com/cognitect/anomalies/0.1.12/anomalies-0.1.12.jar:/root/.m2/repository/com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.9.9/jackson-dataformat-cbor-2.9.9.jar:/root/.m2/repository/com/gfredericks/test.chuck/0.2.10/test.chuck-0.2.10.jar:/root/.m2/repository/org/flatland/useful/0.11.6/useful-0.11.6.jar:/root/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-http/1.1.1/maven-resolver-transport-http-1.1.1.jar:/root/.m2/repository/org/apache/maven/maven-model-builder/3.5.2/maven-model-builder-3.5.2.jar:/root/.m2/repository/io/aviso/pretty/0.1.33/pretty-0.1.33.jar:/root/.m2/repository/com/googlecode/javaewah/JavaEWAH/1.1.6/JavaEWAH-1.1.6.jar:/root/.m2/repository/org/codehaus/plexus/plexus-utils/3.1.0/plexus-utils-3.1.0.jar:/root/.m2/repository/org/apache/maven/resolver/maven-resolver-transport-file/1.1.1/maven-resolver-transport-file-1.1.1.jar:/root/.m2/repository/org/eclipse/sisu/org.eclipse.sisu.plexus/0.3.3/org.eclipse.sisu.plexus-0.3.3.jar:/root/.m2/repository/org/eclipse/jetty/websocket/websocket-api/9.4.19.v20190610/websocket-api-9.4.19.v20190610.jar:/root/.m2/repository/org/flatland/ordered/1.5.7/ordered-1.5.7.jar:/root/.m2/repository/com/jcraft/jsch.agentproxy.usocket-jna/0.0.9/jsch.agentproxy.usocket-jna-0.0.9.jar:/root/.m2/repository/commons-io/commons-io/2.5/commons-io-2.5.jar:/root/.m2/repository/org/apache/maven/maven-settings-builder/3.5.2/maven-settings-builder-3.5.2.jar:/root/.m2/repository/org/clojure/tools.namespace/0.3.1/tools.namespace-0.3.1.jar:/root/.m2/repository/org/eclipse/jetty/websocket/websocket-client/9.4.19.v20190610/websocket-client-9.4.19.v20190610.jar:/root/.m2/repository/org/eclipse/jgit/org.eclipse.jgit/4.10.0.201712302008-r/org.eclipse.jgit-4.10.0.201712302008-r.jar:/root/.m2/repository/com/fasterxml/jackson/core/jackson-core/2.9.9/jackson-core-2.9.9.jar:/root/.m2/repository/clj-time/clj-time/0.10.0/clj-time-0.10.0.jar:/root/.m2/repository/org/yaml/snakeyaml/1.24/snakeyaml-1.24.jar:/root/.m2/repository/javax/enterprise/cdi-api/1.0/cdi-api-1.0.jar:/root/.m2/repository/org/apache/maven/maven-settings/3.5.2/maven-settings-3.5.2.jar:/root/.m2/repository/org/apache/httpcomponents/httpcore/4.4.8/httpcore-4.4.8.jar:/root/.m2/repository/instaparse/instaparse/1.3.6/instaparse-1.3.6.jar:/root/.m2/repository/org/apache/maven/maven-core/3.5.2/maven-core-3.5.2.jar:/root/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar:/root/.m2/repository/stylefruits/gniazdo/1.1.2/gniazdo-1.1.2.jar:/root/.m2/repository/com/taoensso/truss/1.5.0/truss-1.5.0.jar:/root/.m2/repository/com/jcraft/jsch.agentproxy.pageant/0.0.9/jsch.agentproxy.pageant-0.0.9.jar:/root/.m2/repository/org/apache/maven/resolver/maven-resolver-api/1.1.1/maven-resolver-api-1.1.1.jar:/root/.m2/repository/software/amazon/ion/ion-java/1.0.2/ion-java-1.0.2.jar:/root/.m2/repository/com/fasterxml/jackson/core/jackson-annotations/2.5.0/jackson-annotations-2.5.0.jar:/root/.m2/repository/javax/annotation/jsr250-api/1.0/jsr250-api-1.0.jar:/root/.m2/repository/org/apache/maven/maven-resolver-provider/3.5.2/maven-resolver-provider-3.5.2.jar:/root/.m2/repository/org/apache/maven/shared/maven-shared-utils/3.1.0/maven-shared-utils-3.1.0.jar:/root/.m2/repository/org/clojure/java.classpath/0.3.0/java.classpath-0.3.0.jar:/root/.m2/repository/org/clojure/tools.deps.alpha/0.7.549/tools.deps.alpha-0.7.549.jar:/root/.m2/repository/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar:/root/.m2/repository/com/google/guava/guava/20.0/guava-20.0.jar:/root/.m2/repository/org/clojure/data.xml/0.2.0-alpha5/data.xml-0.2.0-alpha5.jar:/root/.m2/repository/com/amazonaws/jmespath-java/1.11.184/jmespath-java-1.11.184.jar:/root/.m2/repository/org/apache/maven/resolver/maven-resolver-spi/1.1.1/maven-resolver-spi-1.1.1.jar:/root/.m2/repository/com/amazonaws/aws-java-sdk-core/1.11.184/aws-java-sdk-core-1.11.184.jar:/root/.m2/repository/com/taoensso/timbre/4.10.0/timbre-4.10.0.jar:/root/.m2/repository/org/codehaus/plexus/plexus-classworlds/2.5.2/plexus-classworlds-2.5.2.jar:/root/.m2/repository/s3-wagon-private/s3-wagon-private/1.3.1/s3-wagon-private-1.3.1.jar:/root/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.4/plexus-sec-dispatcher-1.4.jar:/root/.m2/repository/clj-commons/clj-yaml/0.7.0/clj-yaml-0.7.0.jar:/root/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.24/plexus-interpolation-1.24.jar:/root/.m2/repository/org/apache/httpcomponents/httpclient/4.5.4/httpclient-4.5.4.jar:/root/.m2/repository/net/java/dev/jna/jna/5.4.0/jna-5.4.0.jar:/root/.m2/repository/com/google/inject/guice/4.0/guice-4.0-no_aop.jar:/root/.m2/repository/cheshire/cheshire/5.9.0/cheshire-5.9.0.jar:/root/.m2/repository/tigris/tigris/0.1.1/tigris-0.1.1.jar:/root/.m2/repository/com/jcraft/jsch.agentproxy.connector-factory/0.0.9/jsch.agentproxy.connector-factory-0.0.9.jar:/root/.m2/repository/org/eclipse/jetty/jetty-client/9.4.19.v20190610/jetty-client-9.4.19.v20190610.jar:/root/.m2/repository/com/andrewmcveigh/cljs-time/0.5.1/cljs-time-0.5.1.jar:/root/.m2/repository/org/eclipse/jetty/jetty-io/9.4.19.v20190610/jetty-io-9.4.19.v20190610.jar:/root/.m2/repository/org/clojure/tools.reader/1.3.2/tools.reader-1.3.2.jar:/root/.m2/repository/net/java/dev/jna/jna-platform/5.4.0/jna-platform-5.4.0.jar:/root/.m2/repository/org/clojure/tools.gitlibs/0.2.64/tools.gitlibs-0.2.64.jar:/root/.m2/repository/org/apache/maven/resolver/maven-resolver-connector-basic/1.1.1/maven-resolver-connector-basic-1.1.1.jar:/root/.m2/repository/org/apache/maven/resolver/maven-resolver-impl/1.1.1/maven-resolver-impl-1.1.1.jar:/root/.m2/repository/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25.jar:/root/.m2/repository/org/apache/maven/maven-model/3.5.2/maven-model-3.5.2.jar:/root/.m2/repository/org/clojure/test.check/0.10.0-RC1/test.check-0.10.0-RC1.jar:/root/.gitlibs/libs/taylorwood/clj.native-image/b3823a48be75122b9671c86ce5353a85589ef15f/src:/root/.m2/repository/org/eclipse/sisu/org.eclipse.sisu.inject/0.3.3/org.eclipse.sisu.inject-0.3.3.jar:/root/.m2/repository/org/apache/maven/resolver/maven-resolver-util/1.1.1/maven-resolver-util-1.1.1.jar:/root/.m2/repository/org/eclipse/jetty/websocket/websocket-common/9.4.19.v20190610/websocket-common-9.4.19.v20190610.jar:/root/.m2/repository/org/clojure/core.memoize/0.5.9/core.memoize-0.5.9.jar:/root/.m2/repository/hawk/hawk/0.2.11/hawk-0.2.11.jar:/root/.m2/repository/org/apache/maven/maven-repository-metadata/3.5.2/maven-repository-metadata-3.5.2.jar:/root/.m2/repository/org/clojure/data.priority-map/0.0.7/data.priority-map-0.0.7.jar:/root/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar:/root/.m2/repository/org/apache/maven/maven-builder-support/3.5.2/maven-builder-support-3.5.2.jar:/root/.m2/repository/com/jcraft/jsch/0.1.54/jsch-0.1.54.jar:/root/.m2/repository/com/jcraft/jsch.agentproxy.core/0.0.9/jsch.agentproxy.core-0.0.9.jar:/root/.m2/repository/com/jcraft/jsch.agentproxy.usocket-nc/0.0.9/jsch.agentproxy.usocket-nc-0.0.9.jar:/root/.m2/repository/org/clojure/core.cache/0.6.5/core.cache-0.6.5.jar:/root/.m2/repository/org/ow2/asm/asm-all/4.2/asm-all-4.2.jar:/root/.m2/repository/com/amazonaws/aws-java-sdk-kms/1.11.184/aws-java-sdk-kms-1.11.184.jar:/root/.m2/repository/org/apache/maven/maven-plugin-api/3.5.2/maven-plugin-api-3.5.2.jar:/root/.m2/repository/org/clojure/core.async/0.4.500/core.async-0.4.500.jar:/root/.m2/repository/com/fasterxml/jackson/dataformat/jackson-dataformat-smile/2.9.9/jackson-dataformat-smile-2.9.9.jar:/root/.m2/repository/org/apache/maven/maven-artifact/3.5.2/maven-artifact-3.5.2.jar:/root/.m2/repository/org/clojure/data.codec/0.1.0/data.codec-0.1.0.jar:/root/.m2/repository/com/amazonaws/aws-java-sdk-s3/1.11.184/aws-java-sdk-s3-1.11.184.jar:/root/.m2/repository/http-kit/http-kit/2.3.0/http-kit-2.3.0.jar \
-H:Path=/code/fc4-framework/tool \
-H:EnableURLProtocols=https \
-H:ClassInitialization=clojure:build_time \
-H:ClassInitialization=org.httpkit.client:run_time \
-H:FallbackThreshold=0 \
-H:+AllowIncompleteClasspath \
-H:+ReportUnsupportedElementsAtRuntime \
-H:+StaticExecutable \
-H:Name=target/fc4 \
-H:CLibraryPath=/opt/graalvm-ce-19.2.1/jre/lib/svm/clibraries/linux-amd64 \
-H:Class=fc4.io.cli.main
]
[target/fc4:173]    classlist:  45,617.88 ms
[target/fc4:173]        (cap):   1,804.94 ms
[target/fc4:173]        setup:   3,916.12 ms
[target/fc4:173]   (typeflow):  23,709.41 ms
[target/fc4:173]    (objects):  14,596.24 ms
[target/fc4:173]   (features):   2,268.69 ms
[target/fc4:173]     analysis:  41,889.04 ms
[target/fc4:173]     (clinit):     604.56 ms
[target/fc4:173]     universe:   1,657.16 ms
[target/fc4:173]      (parse):   3,147.89 ms
[target/fc4:173]     (inline):   4,109.84 ms
[target/fc4:173]    (compile):  35,942.58 ms
[target/fc4:173]      compile:  45,723.19 ms
[target/fc4:173]        image:   3,067.16 ms
[target/fc4:173]        write:   1,657.88 ms
[target/fc4:173]      [total]: 143,965.37 ms

The only change I had to make was --initialize-at-build-time=clojure in native-image options. Unfortunately the resulting fc4 image throws an exception about not being able to load clojure.core.server.

aviflax commented 4 years ago

Taylor, thank you so much! I’ll revisit this and pick it back up from where you left it, hopefully in a few weeks. Thanks! 🤗

sogaiu commented 4 years ago

@aviflax I got similar-looking errors but only after trying commits after (and including) https://github.com/taylorwood/clj.native-image/commit/b3823a48be75122b9671c86ce5353a85589ef15f -- I also tried --initialize-at-build-time=clojure but got what taylorwood got:

image throws an exception about not being able to load clojure.core.server.

In my case, builds are successful up through commit https://github.com/taylorwood/clj.native-image/commit/7773c73886a5938fec2d6c5a2227c1aec686e1a5 -- here I had --initialize-at-build-time (with other options as well).

sogaiu commented 4 years ago

I failed to mention that what I tried with was a separate project.

Sorry for any confusion.

sogaiu commented 4 years ago

I just tried building FundingCircle/fc4-framework@ 36aad75491a7c08b2b5db932b6749a69baa71e23 (tip of native-image branch) -- but I get:

$ clj -Sforce -A:native-image
Compiling fc4.io.cli.main
Execution error (FileNotFoundException) at fc4.integrations.structurizr.express.chromium-renderer/loading (chromium_renderer.clj:1).
Could not locate clj_chrome_devtools/automation__init.class, clj_chrome_devtools/automation.clj or clj_chrome_devtools/automation.cljc on classpath. Please check that namespaces with dashes use underscores in the Clojure file name.

May be I'm missing some setup step?

sogaiu commented 4 years ago

Upgrading my clj / clojure to the latest version (1.10.1.492) seems to have addressed this issue (thanks @seancorfield).

I have a running native image binary of fc4 that doesn't crash on startup now, @aviflax :) -s and -f don't cause crashes -- working on getting -w and -r to work.

Things I did to get this running (a Linux distribution, fwiw):

Not quite there yet though, as I get:

$ ./target/fc4 -fsrw doc/examples/docker-install-and-render/
Exception in thread "main" java.lang.IllegalArgumentException: No matching field found: start for class org.eclipse.jetty.websocket.client.WebSocketClient
    at clojure.lang.Reflector.getInstanceField(Reflector.java:397)
    at clojure.lang.Reflector.invokeNoArgInstanceMember(Reflector.java:440)
    at clj_chrome_devtools.impl.connection$connect_url.invokeStatic(connection.clj:127)
    at clj_chrome_devtools.impl.connection$connect.invokeStatic(connection.clj:151)
    at fc4.integrations.structurizr.express.chromium_renderer$make_renderer.invokeStatic(chromium_renderer.clj:280)
    at fc4.integrations.structurizr.express.chromium_renderer$make_renderer.invokeStatic(chromium_renderer.clj:274)
    at fc4.io.cli.main$_main.invokeStatic(main.clj:202)
    at fc4.io.cli.main$_main.doInvoke(main.clj:192)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at fc4.io.cli.main.main(Unknown Source)

Adding a reflection.json file with appropriate content (and adding "-H:ReflectionConfigurationFiles=reflection.json" to native image options) seems to make some of these types of errors go away.

sogaiu commented 4 years ago

This exception at runtime has me stumped:

Exception in thread "main" java.lang.IllegalArgumentException: Class java.nio.file.StandardWatchEventKinds$StdWatchEventKind[] is instantiated reflectively but was never registered. Register the class by using org.graalvm.nativeimage.hosted.RuntimeReflection
    at com.oracle.svm.core.genscavenge.graal.AllocationSnippets.checkArrayHub(AllocationSnippets.java:172)
    at clojure.lang.RT.seqToTypedArray(RT.java:1753)
    at clojure.lang.RT.seqToTypedArray(RT.java:1749)
    at clojure.core$into_array.invokeStatic(core.clj:3452)
    at clojure.core$into_array.invoke(core.clj:3443)
    at hawk.watcher$recursive_register_BANG_.invokeStatic(watcher.clj:39)
    at hawk.watcher$recursive_register_BANG_.invoke(watcher.clj:38)
    at hawk.watcher$fn__109.invokeStatic(watcher.clj:73)
    at hawk.watcher$fn__109.invoke(watcher.clj:72)
    at hawk.watcher$fn__38$G__29__47.invoke(watcher.clj:24)
    at hawk.core$watch_BANG_.invokeStatic(core.clj:83)
    at hawk.core$watch_BANG_.doInvoke(core.clj:59)
    at clojure.lang.RestFn.invoke(RestFn.java:410)
    at fc4.io.watch$start.invokeStatic(watch.clj:124)
    at fc4.io.cli.main$start.invokeStatic(main.clj:188)
    at fc4.io.cli.main$_main$fn__24295.invoke(main.clj:203)
    at fc4.io.cli.main$_main.invokeStatic(main.clj:203)
    at fc4.io.cli.main$_main.doInvoke(main.clj:192)
    at clojure.lang.RestFn.applyTo(RestFn.java:137)
    at fc4.io.cli.main.main(Unknown Source)

FWIW, the reflection.json file is zipped below:

reflection.json.zip

teesloane commented 4 years ago

@sogaiu - did you ever find a solution for this ? I'm running into a similar error using graal and a file watcher library. I'm trying to setup my reflection file to include the java.nio.file.StandardWatchEventKinds$StdWatchEventKind[] but haven't had much luck.

sogaiu commented 4 years ago

@teesloane I don't think I did.

My recommendation is to ask on clojurians slack #graalvm channel about your specific situation.

teesloane commented 4 years ago

@sogaiu will do, thanks!

edit: solution was to add this to my reflection file:

[
  {
    "name" : "java.nio.file.StandardWatchEventKinds$StdWatchEventKind[]"
  }
]