Here is a simple Spring application with beans defined in a programmatic way.
public class App {
public static void main(String[] args) {
GenericApplicationContext context = new GenericApplicationContext();
context.registerBean(Foo.class);
context.registerBean(Bar.class);
context.refresh();
context.getBean(Foo.class);
context.getBean(Bar.class);
}
}
This currently requires the following reflection configuration:
[
{
"name": "com.sample.Foo",
"allDeclaredConstructors" : true,
"allDeclaredMethods": true
},
{
"name": "com.sample.Bar",
"allDeclaredConstructors" : true,
"allDeclaredMethods": true
}
]
SubstrateVM should be able to analyze this kind of programmatic DI to allow running such Spring Framework application without advanced configuration.
Currently during compilation, we get
error: Error encountered while parsing com.oracle.svm.reflect.ClassLoader_findLoadedClass_e808259a373ab881b63621d947f9331965ab1a9e.invoke(java.lang.Object, java.lang.Object[])
Parsing context:
parsing java.lang.reflect.Method.invoke(Method.java:498)
parsing org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
parsing org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:622)
parsing org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:607)
parsing org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1288)
parsing org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1127)
parsing org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getSingletonFactoryBeanForTypeCheck(AbstractAutowireCapableBeanFactory.java:974)
parsing org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:848)
parsing org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:574)
parsing org.springframework.beans.factory.support.AbstractBeanFactory.isTypeMatch(AbstractBeanFactory.java:602)
parsing org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:838)
parsing org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546)
parsing com.sample.App.main(App.java:12)
parsing com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:164)
parsing com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)
Original error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Unsupported method java.lang.ClassLoader.findLoadedClass(String) is reachable: The declaring class of this element has been substituted, but this element is not present in the substitution class
And when running the app without reflection config:
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'com.sample.Foo': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.sample.Foo]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.sample.Foo.<init>()
at java.lang.Throwable.<init>(Throwable.java:265)
at java.lang.Exception.<init>(Exception.java:66)
at java.lang.RuntimeException.<init>(RuntimeException.java:62)
at org.springframework.core.NestedRuntimeException.<init>(NestedRuntimeException.java:56)
at org.springframework.beans.BeansException.<init>(BeansException.java:40)
at org.springframework.beans.FatalBeanException.<init>(FatalBeanException.java:35)
at org.springframework.beans.factory.BeanCreationException.<init>(BeanCreationException.java:98)
at org.springframework.beans.factory.BeanCreationException.<init>(BeanCreationException.java:114)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1270)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1164)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:538)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
at org.springframework.beans.factory.support.AbstractBeanFactory$$Lambda$2c40051508af481f3e2b011afbd5800cdeae9fd3.getObject(Unknown Source)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:846)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:863)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546)
at com.sample.App.main(App.java:12)
at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:164)
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.sample.Foo]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.sample.Foo.<init>()
A repro project is available at https://github.com/sdeleuze/graal-issues/tree/master/functional-bean-definition.
@sdeleuze, kind of interesting result. If I run your classes in gradle with native-image I do get another result with RC10 on Linux sergej-P50 4.18.0-13-generic #14-Ubuntu SMP Wed Dec 5 09:04:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
> Task :oracleIssue:nativeImage
Executing [
/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/bin/java \
-XX:+UnlockExperimentalVMOptions \
-XX:+EnableJVMCI \
-XX:-UseJVMCICompiler \
-Dtruffle.TrustAllTruffleRuntimeProviders=true \
-d64 \
-noverify \
-XX:-UseJVMCIClassLoader \
-Xss10m \
-Xms1g \
-Xmx12931425888 \
-Duser.country=US \
-Duser.language=en \
-Dgraalvm.version=1.0.0-rc10 \
-Dorg.graalvm.version=1.0.0-rc10 \
-Dcom.oracle.graalvm.isaot=true \
-Djvmci.class.path.append=/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/jvmci/graal.jar \
-Xbootclasspath/a:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/boot/graal-sdk.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/boot/graaljs-scriptengine.jar \
-cp \
/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/svm/builder/objectfile.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/svm/builder/pointsto.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/svm/builder/svm.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/jvmci/jvmci-hotspot.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/jvmci/graal.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/jvmci/graal-management.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/jvmci/jvmci-api.jar \
com.oracle.svm.hosted.NativeImageGeneratorRunner \
-watchpid \
28121 \
-H:Name=hello-world \
-H:+ReportUnsupportedElementsAtRuntime \
-H:DelayClassInitialization=org.springframework.core.io.VfsUtils \
-H:+AllowIncompleteClasspath \
-H:CLibraryPath=/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/svm/clibraries/linux-amd64 \
-H:Path=/home/sergej/Development/GitHub/GraalVMTest/oracleIssue/build/graal \
-H:Class=App \
-imagecp \
/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/boot/graal-sdk.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/boot/graaljs-scriptengine.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/svm/builder/objectfile.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/svm/builder/pointsto.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/svm/builder/svm.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/jvmci/jvmci-hotspot.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/jvmci/graal.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/jvmci/graal-management.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/jvmci/jvmci-api.jar:/home/sergej/.gradle/caches/com.palantir.graal/1.0.0-rc10/graalvm-ce-1.0.0-rc10/jre/lib/svm/library-support.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.graalvm.compiler/compiler/1.0.0-rc10/348252f37a155aba52e3ee9da9fbe483589d5d6e/compiler-1.0.0-rc10.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/com.oracle.substratevm/svm/1.0.0-rc10/58e31195b7330226169b4b9ede13d1314171a4f0/svm-1.0.0-rc10.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.graalvm.sdk/graal-sdk/1.0.0-rc10/12900d233d14f6382dd15c6481763777c56bf183/graal-sdk-1.0.0-rc10.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.springframework/spring-context/5.1.4.RELEASE/2be9e8da66d32fb4eaf29a46bdcdbfe155f1f87a/spring-context-5.1.4.RELEASE.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-core/2.11.1/592a48674c926b01a9a747c7831bcd82a9e6d6e4/log4j-core-2.11.1.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.springframework/spring-aop/5.1.4.RELEASE/57a8c4ab2ff3233095da24c58c30aa75a7a82069/spring-aop-5.1.4.RELEASE.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.springframework/spring-beans/5.1.4.RELEASE/507c9391e0b786704929453e7fd3a74cfba46534/spring-beans-5.1.4.RELEASE.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.springframework/spring-expression/5.1.4.RELEASE/1abbfd04a7d472811582bb3780ea4d871442d49c/spring-expression-5.1.4.RELEASE.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.springframework/spring-core/5.1.4.RELEASE/e7d2ad03a50ebff117a6efe2e0e3f15946d0768a/spring-core-5.1.4.RELEASE.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-api/2.11.1/268f0fe4df3eefe052b57c87ec48517d64fb2a10/log4j-api-2.11.1.jar:/home/sergej/.gradle/caches/modules-2/files-2.1/org.springframework/spring-jcl/5.1.4.RELEASE/f5a25caae583905203959abf35fdd1ab7a8f2c37/spring-jcl-5.1.4.RELEASE.jar:/home/sergej/Development/GitHub/GraalVMTest/oracleIssue/build/libs/oracleIssue.jar
]
[hello-world:28125] classlist: 2,086.58 ms
[hello-world:28125] (cap): 1,163.30 ms
[hello-world:28125] setup: 2,384.48 ms
ERROR StatusLogger No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided configurations. Set system property 'log4j2.debug' to show Log4j 2 internal initialization logging. See https://logging.apache.org/log4j/2.x/manual/configuration.html for instructions on how to configure Log4j 2
ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider com.oracle.truffle.js.scriptengine.GraalJSEngineFactory could not be instantiated
ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider com.oracle.truffle.js.scriptengine.GraalJSEngineFactory could not be instantiated
ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider com.oracle.truffle.js.scriptengine.GraalJSEngineFactory could not be instantiated
ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider com.oracle.truffle.js.scriptengine.GraalJSEngineFactory could not be instantiated
Warning: class initialization of class org.apache.logging.log4j.core.pattern.JAnsiTextRenderer failed with exception java.lang.NoSuchFieldError: WHITE. This class will be initialized at run time because either option --report-unsupported-elements-at-runtime or option --allow-incomplete-classpath is used for image building. Use the option --delay-class-initialization-to-runtime=org.apache.logging.log4j.core.pattern.JAnsiTextRenderer to explicitly request delayed initialization of this class.
[hello-world:28125] analysis: 43,817.67 ms
error: unsupported features in 16 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.asType(MethodType)
Trace:
at parsing java.lang.invoke.CallSite.makeUninitializedCallSite(CallSite.java:241)
Call path from entry point to java.lang.invoke.CallSite.makeUninitializedCallSite(MethodType):
at java.lang.invoke.CallSite.makeUninitializedCallSite(CallSite.java:238)
at java.lang.invoke.CallSite.<init>(CallSite.java:105)
at java.lang.invoke.MutableCallSite.<init>(MutableCallSite.java:100)
at jdk.internal.dynalink.support.AbstractRelinkableCallSite.<init>(AbstractRelinkableCallSite.java:104)
at jdk.internal.dynalink.ChainedCallSite.<init>(ChainedCallSite.java:135)
at jdk.nashorn.internal.runtime.linker.LinkerCallSite.<init>(LinkerCallSite.java:72)
at jdk.nashorn.internal.runtime.linker.LinkerCallSite.newLinkerCallSite(LinkerCallSite.java:124)
at jdk.nashorn.internal.runtime.linker.Bootstrap.bootstrap(Bootstrap.java:208)
at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:371)
at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:345)
at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:403)
at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:400)
at jdk.nashorn.internal.objects.Global.getLazilyCreatedValue(Global.java:1379)
at jdk.nashorn.internal.objects.Global.getDynamicInvoker(Global.java:1409)
at jdk.nashorn.internal.runtime.ListAdapter.getDynamicInvoker(ListAdapter.java:409)
at jdk.nashorn.internal.runtime.ListAdapter.invokePop(ListAdapter.java:288)
at jdk.nashorn.internal.runtime.ListAdapter.remove(ListAdapter.java:269)
at sun.nio.ch.SharedFileLockTable.removeAll(FileLockTable.java:212)
at sun.nio.ch.FileChannelImpl.implCloseChannel(FileChannelImpl.java:119)
at java.nio.channels.spi.AbstractInterruptibleChannel$1.interrupt(AbstractInterruptibleChannel.java:165)
at java.lang.Thread.interrupt(Thread.java:922)
at java.io.PrintStream.newLine(PrintStream.java:552)
at java.io.PrintStream.println(PrintStream.java:807)
at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:751)
at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(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.MethodHandle.bindArgumentL(int, Object)
Trace:
at parsing java.lang.invoke.CallSite.makeDynamicInvoker(CallSite.java:214)
Call path from entry point to java.lang.invoke.CallSite.makeDynamicInvoker():
at java.lang.invoke.CallSite.makeDynamicInvoker(CallSite.java:214)
at java.lang.invoke.MutableCallSite.dynamicInvoker(MutableCallSite.java:162)
at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:371)
at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:345)
at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:403)
at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:400)
at jdk.nashorn.internal.objects.Global.getLazilyCreatedValue(Global.java:1379)
at jdk.nashorn.internal.objects.Global.getDynamicInvoker(Global.java:1409)
at jdk.nashorn.internal.runtime.ListAdapter.getDynamicInvoker(ListAdapter.java:409)
at jdk.nashorn.internal.runtime.ListAdapter.invokePop(ListAdapter.java:288)
at jdk.nashorn.internal.runtime.ListAdapter.remove(ListAdapter.java:269)
at sun.nio.ch.SharedFileLockTable.removeAll(FileLockTable.java:212)
at sun.nio.ch.FileChannelImpl.implCloseChannel(FileChannelImpl.java:119)
at java.nio.channels.spi.AbstractInterruptibleChannel$1.interrupt(AbstractInterruptibleChannel.java:165)
at java.lang.Thread.interrupt(Thread.java:922)
at java.io.PrintStream.newLine(PrintStream.java:552)
at java.io.PrintStream.println(PrintStream.java:807)
at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:751)
at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(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.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 jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.asType(MethodHandleFactory.java:419)
at jdk.nashorn.internal.runtime.AccessorProperty.initGetterSetter(AccessorProperty.java:271)
at jdk.nashorn.internal.runtime.AccessorProperty.<init>(AccessorProperty.java:255)
at jdk.nashorn.internal.runtime.ScriptObject.addSpillProperty(ScriptObject.java:2509)
at jdk.nashorn.internal.runtime.ScriptObject.setObject(ScriptObject.java:3056)
at jdk.nashorn.internal.runtime.ScriptObject.set(ScriptObject.java:3229)
at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:270)
at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:268)
at jdk.nashorn.api.scripting.ScriptObjectMirror.inGlobal(ScriptObjectMirror.java:858)
at jdk.nashorn.api.scripting.ScriptObjectMirror.toString(ScriptObjectMirror.java:94)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.oracle.svm.core.amd64.AMD64CPUFeatureAccess.verifyHostSupportsArchitecture(AMD64CPUFeatureAccess.java:165)
at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:138)
at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(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:515)
at jdk.nashorn.internal.runtime.linker.NashornBeansLinker.getFunctionalInterfaceMethodName(NashornBeansLinker.java:211)
at jdk.nashorn.internal.runtime.linker.Bootstrap.isFunctionalInterfaceObject(Bootstrap.java:194)
at jdk.nashorn.internal.runtime.linker.Bootstrap.isCallable(Bootstrap.java:145)
at jdk.nashorn.internal.objects.Global.getDefaultValue(Global.java:1219)
at jdk.nashorn.internal.runtime.ScriptObject.getDefaultValue(ScriptObject.java:1429)
at jdk.nashorn.api.scripting.ScriptObjectMirror$35.call(ScriptObjectMirror.java:904)
at jdk.nashorn.api.scripting.ScriptObjectMirror.inGlobal(ScriptObjectMirror.java:858)
at jdk.nashorn.api.scripting.ScriptObjectMirror.toString(ScriptObjectMirror.java:94)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.oracle.svm.core.amd64.AMD64CPUFeatureAccess.verifyHostSupportsArchitecture(AMD64CPUFeatureAccess.java:165)
at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:138)
at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(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 jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.asType(MethodHandleFactory.java:419)
at jdk.nashorn.internal.runtime.AccessorProperty.initGetterSetter(AccessorProperty.java:271)
at jdk.nashorn.internal.runtime.AccessorProperty.<init>(AccessorProperty.java:255)
at jdk.nashorn.internal.runtime.ScriptObject.addSpillProperty(ScriptObject.java:2509)
at jdk.nashorn.internal.runtime.ScriptObject.setObject(ScriptObject.java:3056)
at jdk.nashorn.internal.runtime.ScriptObject.set(ScriptObject.java:3229)
at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:270)
at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:268)
at jdk.nashorn.api.scripting.ScriptObjectMirror.inGlobal(ScriptObjectMirror.java:858)
at jdk.nashorn.api.scripting.ScriptObjectMirror.toString(ScriptObjectMirror.java:94)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.oracle.svm.core.amd64.AMD64CPUFeatureAccess.verifyHostSupportsArchitecture(AMD64CPUFeatureAccess.java:165)
at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:138)
at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(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.MethodHandles.insertArguments(MethodHandle, int, Object[])
Trace:
at parsing jdk.internal.dynalink.DynamicLinker.createRelinkAndInvokeMethod(DynamicLinker.java:224)
Call path from entry point to jdk.internal.dynalink.DynamicLinker.createRelinkAndInvokeMethod(RelinkableCallSite, int):
at jdk.internal.dynalink.DynamicLinker.createRelinkAndInvokeMethod(DynamicLinker.java:224)
at jdk.internal.dynalink.DynamicLinker.link(DynamicLinker.java:201)
at jdk.nashorn.internal.runtime.linker.Bootstrap.bootstrap(Bootstrap.java:208)
at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:371)
at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:345)
at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:403)
at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:400)
at jdk.nashorn.internal.objects.Global.getLazilyCreatedValue(Global.java:1379)
at jdk.nashorn.internal.objects.Global.getDynamicInvoker(Global.java:1409)
at jdk.nashorn.internal.runtime.ListAdapter.getDynamicInvoker(ListAdapter.java:409)
at jdk.nashorn.internal.runtime.ListAdapter.invokePop(ListAdapter.java:288)
at jdk.nashorn.internal.runtime.ListAdapter.remove(ListAdapter.java:269)
at sun.nio.ch.SharedFileLockTable.removeAll(FileLockTable.java:212)
at sun.nio.ch.FileChannelImpl.implCloseChannel(FileChannelImpl.java:119)
at java.nio.channels.spi.AbstractInterruptibleChannel$1.interrupt(AbstractInterruptibleChannel.java:165)
at java.lang.Thread.interrupt(Thread.java:922)
at java.io.PrintStream.newLine(PrintStream.java:552)
at java.io.PrintStream.println(PrintStream.java:807)
at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:751)
at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(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.MethodHandles.insertArguments(MethodHandle, int, Object[])
Trace:
at parsing jdk.nashorn.internal.lookup.MethodHandleFactory.addDebugPrintout(MethodHandleFactory.java:287)
Call path from entry point to jdk.nashorn.internal.lookup.MethodHandleFactory.addDebugPrintout(DebugLogger, Level, MethodHandle, int, boolean, Object):
at jdk.nashorn.internal.lookup.MethodHandleFactory.addDebugPrintout(MethodHandleFactory.java:277)
at jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.debug(MethodHandleFactory.java:376)
at jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.insertArguments(MethodHandleFactory.java:402)
at jdk.nashorn.internal.runtime.AccessorProperty.initGetterSetter(AccessorProperty.java:271)
at jdk.nashorn.internal.runtime.AccessorProperty.<init>(AccessorProperty.java:255)
at jdk.nashorn.internal.runtime.ScriptObject.addSpillProperty(ScriptObject.java:2509)
at jdk.nashorn.internal.runtime.ScriptObject.setObject(ScriptObject.java:3056)
at jdk.nashorn.internal.runtime.ScriptObject.set(ScriptObject.java:3229)
at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:270)
at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:268)
at jdk.nashorn.api.scripting.ScriptObjectMirror.inGlobal(ScriptObjectMirror.java:858)
at jdk.nashorn.api.scripting.ScriptObjectMirror.toString(ScriptObjectMirror.java:94)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.oracle.svm.core.amd64.AMD64CPUFeatureAccess.verifyHostSupportsArchitecture(AMD64CPUFeatureAccess.java:165)
at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:138)
at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(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.MutableCallSite.<init>(MethodHandle)
Trace:
at parsing java.lang.invoke.SwitchPoint.<init>(SwitchPoint.java:124)
Call path from entry point to java.lang.invoke.SwitchPoint.<init>():
at java.lang.invoke.SwitchPoint.<init>(SwitchPoint.java:123)
at jdk.nashorn.internal.runtime.CompiledFunction$OptimismInfo.newOptimisticAssumptions(CompiledFunction.java:919)
at jdk.nashorn.internal.runtime.CompiledFunction$OptimismInfo.<init>(CompiledFunction.java:915)
at jdk.nashorn.internal.runtime.CompiledFunction.<init>(CompiledFunction.java:128)
at jdk.nashorn.internal.runtime.RecompilableScriptFunctionData.addCode(RecompilableScriptFunctionData.java:830)
at jdk.nashorn.internal.runtime.RecompilableScriptFunctionData.initializeCode(RecompilableScriptFunctionData.java:825)
at jdk.nashorn.internal.runtime.StoredScript.installScript(StoredScript.java:138)
at jdk.nashorn.internal.runtime.Context.compile(Context.java:1325)
at jdk.nashorn.internal.runtime.Context.compileScript(Context.java:651)
at jdk.nashorn.api.scripting.NashornScriptEngine.asCompiledScript(NashornScriptEngine.java:493)
at jdk.nashorn.api.scripting.NashornScriptEngine.compile(NashornScriptEngine.java:182)
at org.apache.logging.log4j.core.script.ScriptManager$MainScriptRunner$1.run(ScriptManager.java:207)
at org.apache.logging.log4j.core.script.ScriptManager$MainScriptRunner$1.run(ScriptManager.java:203)
at com.oracle.svm.core.jdk.Target_java_security_AccessController.doPrivileged(SecuritySubstitutions.java:62)
at java.io.PrintWriter.<init>(PrintWriter.java:116)
at java.io.PrintWriter.<init>(PrintWriter.java:148)
at javax.xml.transform.TransformerException.printStackTrace(TransformerException.java:282)
at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:753)
at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.bindTo(MethodHandle, Object)
Trace:
at parsing jdk.nashorn.internal.runtime.linker.LinkerCallSite$ProfilingLinkerCallSite.setTarget(LinkerCallSite.java:243)
Call path from entry point to jdk.nashorn.internal.runtime.linker.LinkerCallSite$ProfilingLinkerCallSite.setTarget(MethodHandle):
at jdk.nashorn.internal.runtime.linker.LinkerCallSite$ProfilingLinkerCallSite.setTarget(LinkerCallSite.java:239)
at jdk.internal.dynalink.support.AbstractRelinkableCallSite.initialize(AbstractRelinkableCallSite.java:115)
at jdk.internal.dynalink.DynamicLinker.link(DynamicLinker.java:201)
at jdk.nashorn.internal.runtime.linker.Bootstrap.bootstrap(Bootstrap.java:208)
at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:371)
at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:345)
at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:403)
at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:400)
at jdk.nashorn.internal.objects.Global.getLazilyCreatedValue(Global.java:1379)
at jdk.nashorn.internal.objects.Global.getDynamicInvoker(Global.java:1409)
at jdk.nashorn.internal.runtime.ListAdapter.getDynamicInvoker(ListAdapter.java:409)
at jdk.nashorn.internal.runtime.ListAdapter.invokePop(ListAdapter.java:288)
at jdk.nashorn.internal.runtime.ListAdapter.remove(ListAdapter.java:269)
at sun.nio.ch.SharedFileLockTable.removeAll(FileLockTable.java:212)
at sun.nio.ch.FileChannelImpl.implCloseChannel(FileChannelImpl.java:119)
at java.nio.channels.spi.AbstractInterruptibleChannel$1.interrupt(AbstractInterruptibleChannel.java:165)
at java.lang.Thread.interrupt(Thread.java:922)
at java.io.PrintStream.newLine(PrintStream.java:552)
at java.io.PrintStream.println(PrintStream.java:807)
at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:751)
at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.insertArguments(MethodHandle, int, Object[])
Trace:
at parsing jdk.nashorn.internal.codegen.ObjectClassGenerator.createGetterInner(ObjectClassGenerator.java:566)
Call path from entry point to jdk.nashorn.internal.codegen.ObjectClassGenerator.createGetterInner(Class, Class, MethodHandle, MethodHandle, List, int):
at jdk.nashorn.internal.codegen.ObjectClassGenerator.createGetterInner(ObjectClassGenerator.java:548)
at jdk.nashorn.internal.codegen.ObjectClassGenerator.createGetter(ObjectClassGenerator.java:682)
at jdk.nashorn.internal.runtime.AccessorProperty.getGetter(AccessorProperty.java:516)
at jdk.nashorn.internal.runtime.AccessorProperty.getObjectValue(AccessorProperty.java:415)
at jdk.nashorn.internal.runtime.FindProperty.getObjectValue(FindProperty.java:229)
at jdk.nashorn.internal.runtime.ScriptObject.get(ScriptObject.java:2842)
at jdk.nashorn.internal.runtime.ScriptObject.get(ScriptObject.java:2877)
at jdk.nashorn.api.scripting.ScriptObjectMirror$3.call(ScriptObjectMirror.java:223)
at jdk.nashorn.api.scripting.ScriptObjectMirror.inGlobal(ScriptObjectMirror.java:858)
at jdk.nashorn.api.scripting.ScriptObjectMirror.toString(ScriptObjectMirror.java:94)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.oracle.svm.core.amd64.AMD64CPUFeatureAccess.verifyHostSupportsArchitecture(AMD64CPUFeatureAccess.java:165)
at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:138)
at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.insertArguments(MethodHandle, int, Object[])
Trace:
at parsing jdk.nashorn.internal.runtime.AccessorProperty.getSetter(AccessorProperty.java:627)
Call path from entry point to jdk.nashorn.internal.runtime.AccessorProperty.getSetter(Class, PropertyMap):
at jdk.nashorn.internal.runtime.AccessorProperty.getSetter(AccessorProperty.java:604)
at jdk.nashorn.internal.runtime.AccessorProperty.invokeSetter(AccessorProperty.java:460)
at jdk.nashorn.internal.runtime.AccessorProperty.setValue(AccessorProperty.java:483)
at jdk.nashorn.internal.runtime.FindProperty.setValue(FindProperty.java:259)
at jdk.nashorn.internal.runtime.ScriptObject.setObject(ScriptObject.java:3038)
at jdk.nashorn.internal.runtime.ScriptObject.set(ScriptObject.java:3229)
at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:270)
at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:268)
at jdk.nashorn.api.scripting.ScriptObjectMirror.inGlobal(ScriptObjectMirror.java:858)
at jdk.nashorn.api.scripting.ScriptObjectMirror.toString(ScriptObjectMirror.java:94)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.oracle.svm.core.amd64.AMD64CPUFeatureAccess.verifyHostSupportsArchitecture(AMD64CPUFeatureAccess.java:165)
at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:138)
at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.insertArguments(MethodHandle, int, Object[])
Trace:
at parsing jdk.nashorn.internal.runtime.SpillProperty$Accessors.<init>(SpillProperty.java:65)
Call path from entry point to jdk.nashorn.internal.runtime.SpillProperty$Accessors.<init>(int):
at jdk.nashorn.internal.runtime.SpillProperty$Accessors.<init>(SpillProperty.java:62)
at jdk.nashorn.internal.runtime.SpillProperty$Accessors.getCached(SpillProperty.java:85)
at jdk.nashorn.internal.runtime.SpillProperty.primitiveSetter(SpillProperty.java:145)
at jdk.nashorn.internal.runtime.SpillProperty.<init>(SpillProperty.java:162)
at jdk.nashorn.internal.runtime.ScriptObject.addSpillProperty(ScriptObject.java:2513)
at jdk.nashorn.internal.runtime.ScriptObject.setObject(ScriptObject.java:3056)
at jdk.nashorn.internal.runtime.ScriptObject.set(ScriptObject.java:3229)
at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:270)
at jdk.nashorn.api.scripting.ScriptObjectMirror$7.call(ScriptObjectMirror.java:268)
at jdk.nashorn.api.scripting.ScriptObjectMirror.inGlobal(ScriptObjectMirror.java:858)
at jdk.nashorn.api.scripting.ScriptObjectMirror.toString(ScriptObjectMirror.java:94)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.oracle.svm.core.amd64.AMD64CPUFeatureAccess.verifyHostSupportsArchitecture(AMD64CPUFeatureAccess.java:165)
at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:138)
at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: jdk.nashorn.internal.lookup.MethodHandleFactory$StandardMethodHandleFunctionality.insertArguments(MethodHandle, int, Object[])
Trace:
at parsing jdk.nashorn.internal.runtime.linker.LinkerCallSite$TracingLinkerCallSite.getFallbackLoggingRelink(LinkerCallSite.java:397)
Call path from entry point to jdk.nashorn.internal.runtime.linker.LinkerCallSite$TracingLinkerCallSite.getFallbackLoggingRelink(MethodHandle):
at jdk.nashorn.internal.runtime.linker.LinkerCallSite$TracingLinkerCallSite.getFallbackLoggingRelink(LinkerCallSite.java:392)
at jdk.nashorn.internal.runtime.linker.LinkerCallSite$TracingLinkerCallSite.initialize(LinkerCallSite.java:378)
at jdk.internal.dynalink.DynamicLinker.link(DynamicLinker.java:201)
at jdk.nashorn.internal.runtime.linker.Bootstrap.bootstrap(Bootstrap.java:208)
at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:371)
at jdk.nashorn.internal.runtime.linker.Bootstrap.createDynamicInvoker(Bootstrap.java:345)
at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:403)
at jdk.nashorn.internal.runtime.ListAdapter$2.call(ListAdapter.java:400)
at jdk.nashorn.internal.objects.Global.getLazilyCreatedValue(Global.java:1379)
at jdk.nashorn.internal.objects.Global.getDynamicInvoker(Global.java:1409)
at jdk.nashorn.internal.runtime.ListAdapter.getDynamicInvoker(ListAdapter.java:409)
at jdk.nashorn.internal.runtime.ListAdapter.invokePop(ListAdapter.java:288)
at jdk.nashorn.internal.runtime.ListAdapter.remove(ListAdapter.java:269)
at sun.nio.ch.SharedFileLockTable.removeAll(FileLockTable.java:212)
at sun.nio.ch.FileChannelImpl.implCloseChannel(FileChannelImpl.java:119)
at java.nio.channels.spi.AbstractInterruptibleChannel$1.interrupt(AbstractInterruptibleChannel.java:165)
at java.lang.Thread.interrupt(Thread.java:922)
at java.io.PrintStream.newLine(PrintStream.java:552)
at java.io.PrintStream.println(PrintStream.java:807)
at com.oracle.svm.jni.functions.JNIFunctions.ExceptionDescribe(JNIFunctions.java:751)
at com.oracle.svm.core.code.IsolateEnterStub.JNIFunctions_ExceptionDescribe_b5412f7570bccae90b000bc37855f00408b2ad73(generated:0)
Error: com.oracle.graal.pointsto.constraints.UnsupportedFeatureException: Invoke with MethodHandle argument could not be reduced to at most a single call: jdk.nashorn.internal.runtime.ScriptFunction.createBuiltin(String, MethodHandle, Specialization[], int)
Trace:
at parsing jdk.nashorn.internal.objects.Global.init(Global.java:2270)
Call path from entry point to jdk.nashorn.internal.objects.Global.init(ScriptEngine):
at jdk.nashorn.internal.objects.Global.init(Global.java:2259)
at jdk.nashorn.internal.objects.Global.initBuiltinObjects(Global.java:1094)
at jdk.nashorn.internal.runtime.Context.initGlobal(Context.java:1150)
at jdk.nashorn.api.scripting.NashornScriptEngine.createNashornGlobal(NashornScriptEngine.java:360)
at jdk.nashorn.api.scripting.NashornScriptEngine.<init>(NashornScriptEngine.java:143)
at jdk.nashorn.api.scripting.NashornScriptEngineFactory.getScriptEngine(NashornScriptEngineFactory.java:148)
at org.apache.logging.log4j.core.script.ScriptManager.<init>(ScriptManager.java:99)
at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:216)
at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:250)
at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:547)
at org.apache.logging.log4j.core.LoggerContext.onChange(LoggerContext.java:670)
at org.apache.logging.log4j.core.config.ConfiguratonFileWatcher$ReconfigurationRunnable.run(ConfiguratonFileWatcher.java:68)
at java.lang.Thread.run(Thread.java:748)
at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:480)
at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:198)
at com.oracle.svm.core.code.IsolateEnterStub.PosixJavaThreads_pthreadStartRoutine_e1f4a8c0039f8337338252cd8734f63a79b5e3df(generated:0)
Error: type is not available in this platform: org.graalvm.nativeimage.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.fromMethodDescriptorString(MethodType.java:1071)
at java.lang.invoke.BoundMethodHandle$Factory.makeCbmhCtor(BoundMethodHandle.java:818)
at java.lang.invoke.BoundMethodHandle$Factory.makeCtors(BoundMethodHandle.java:763)
at java.lang.invoke.BoundMethodHandle$SpeciesData.<init>(BoundMethodHandle.java:349)
at java.lang.invoke.BoundMethodHandle$SpeciesData$1.apply(BoundMethodHandle.java:389)
at java.lang.invoke.BoundMethodHandle$SpeciesData$1.apply(BoundMethodHandle.java:383)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.stream.SpinedBuffer.forEach(SpinedBuffer.java:246)
at java.util.stream.SpinedBuffer.toString(SpinedBuffer.java:269)
at java.lang.String.valueOf(String.java:2994)
at java.lang.StringBuilder.append(StringBuilder.java:131)
at com.oracle.svm.core.amd64.AMD64CPUFeatureAccess.verifyHostSupportsArchitecture(AMD64CPUFeatureAccess.java:165)
at com.oracle.svm.core.JavaMainWrapper.run(JavaMainWrapper.java:138)
at com.oracle.svm.core.code.IsolateEnterStub.JavaMainWrapper_run_5087f5482cc9a6abc971913ece43acb471d2631b(generated:0)
Error: type is not available in this platform: org.graalvm.nativeimage.impl.ImageSingletonsSupport
Error: Image building with exit status 1
Regarding your issue with:
GenericApplicationContext context = new GenericApplicationContext();
context.registerBean(Foo.class);
It is quite easy to write a NodePlugin, which will react on every method invocation of registerBean and gets the argument. Or you could use an @AutomaticFeature like the guys from Graal-Team do, to register callbacks, when some specific method has been called.
In my opinion it is not SubstrateVMs task to support every framework. Like I said, it is quite easy to dynamically register classes via static code analysis.
@SergejIsbrecht Where can I find documentation and samples to write such NodePlugin?
@cstancu I will be happy to close that issue and implement it myself on Spring Fu side, I just need a little bit of guidance. Is @AutomaticFeature designed to be used by frameworks outside of GraalVM itself? If so in witch dependency is this annotation and related dependencies available? Is there an example project somewhere?
Is @AutomaticFeature designed to be used by frameworks outside of GraalVM itself?
@sdeleuze see https://github.com/oracle/graal/issues/1005#issuecomment-469488875
@sdeleuze Would this new agent that records reflection usage help? Prototype is described at "https://github.com/oracle/graal/blob/master/substratevm/CONFIGURE.md". Do applications typically have tests that would exercise that reflection?
@thomaswue I will give it a try tomorrow.
@sdeleuze I will close this issue as not-a-bug. As you mentioned above the automatic reflection registration should be implemented on Spring Fu side via a Feature.
@sdeleuze we currently don't have a tutorial for Feature but you can look at JavaFXFeature, ServiceLoaderFeature or SecurityServicesFeature for some relatively simple examples of features that perform automatic reflection registration. As it was mentioned above: @AutomaticFeature is meant for internal use. Instead, you should list the feature class explicitly using the --features=... option.
Thanks for the guidance @cstancu.
Most helpful comment
@sdeleuze see https://github.com/oracle/graal/issues/1005#issuecomment-469488875