From 1ff802d8e044ac01aaeb0f9990020f9c704b5d04 Mon Sep 17 00:00:00 2001 From: Janne Valkealahti Date: Fri, 29 Jul 2022 16:24:40 +0100 Subject: [PATCH] Add recorded jni-config for windows in sample - While out of a box *nix don't need spesific native config as is, windows is a different story as it needs jna/jansi stuff and i.e. jna needs jvm native things which doesn't work without correct graal configs. - Relates #490 --- .../META-INF/native-image/jni-config.json | 286 ++++++++++++++++++ 1 file changed, 286 insertions(+) create mode 100644 spring-shell-samples/src/main/resources/META-INF/native-image/jni-config.json diff --git a/spring-shell-samples/src/main/resources/META-INF/native-image/jni-config.json b/spring-shell-samples/src/main/resources/META-INF/native-image/jni-config.json new file mode 100644 index 00000000..dbd3523b --- /dev/null +++ b/spring-shell-samples/src/main/resources/META-INF/native-image/jni-config.json @@ -0,0 +1,286 @@ +[ +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"com.sun.jna.Callback" +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"com.sun.jna.CallbackReference", + "methods":[ + {"name":"getCallback","parameterTypes":["java.lang.Class","com.sun.jna.Pointer","boolean"] }, + {"name":"getFunctionPointer","parameterTypes":["com.sun.jna.Callback","boolean"] }, + {"name":"getNativeString","parameterTypes":["java.lang.Object","boolean"] }, + {"name":"initializeThread","parameterTypes":["com.sun.jna.Callback","com.sun.jna.CallbackReference$AttachOptions"] } + ] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"com.sun.jna.CallbackReference$AttachOptions" +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"com.sun.jna.FromNativeConverter", + "methods":[{"name":"nativeType","parameterTypes":[] }] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"com.sun.jna.IntegerType", + "fields":[{"name":"value"}] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"com.sun.jna.JNIEnv" +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"com.sun.jna.Native", + "methods":[ + {"name":"dispose","parameterTypes":[] }, + {"name":"fromNative","parameterTypes":["com.sun.jna.FromNativeConverter","java.lang.Object","java.lang.reflect.Method"] }, + {"name":"fromNative","parameterTypes":["java.lang.Class","java.lang.Object"] }, + {"name":"fromNative","parameterTypes":["java.lang.reflect.Method","java.lang.Object"] }, + {"name":"nativeType","parameterTypes":["java.lang.Class"] }, + {"name":"toNative","parameterTypes":["com.sun.jna.ToNativeConverter","java.lang.Object"] } + ] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"com.sun.jna.Native$ffi_callback", + "methods":[{"name":"invoke","parameterTypes":["long","long","long"] }] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"com.sun.jna.NativeMapped", + "methods":[{"name":"toNative","parameterTypes":[] }] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"com.sun.jna.Pointer", + "fields":[{"name":"peer"}], + "methods":[{"name":"","parameterTypes":["long"] }] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"com.sun.jna.PointerType", + "fields":[{"name":"pointer"}] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"com.sun.jna.Structure", + "fields":[ + {"name":"memory"}, + {"name":"typeInfo"} + ], + "methods":[ + {"name":"autoRead","parameterTypes":[] }, + {"name":"autoWrite","parameterTypes":[] }, + {"name":"getTypeInfo","parameterTypes":[] }, + {"name":"newInstance","parameterTypes":["java.lang.Class","long"] } + ] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"com.sun.jna.Structure$ByValue" +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"com.sun.jna.Structure$FFIType$FFITypes", + "fields":[ + {"name":"ffi_type_double"}, + {"name":"ffi_type_float"}, + {"name":"ffi_type_longdouble"}, + {"name":"ffi_type_pointer"}, + {"name":"ffi_type_sint16"}, + {"name":"ffi_type_sint32"}, + {"name":"ffi_type_sint64"}, + {"name":"ffi_type_sint8"}, + {"name":"ffi_type_uint16"}, + {"name":"ffi_type_uint32"}, + {"name":"ffi_type_uint64"}, + {"name":"ffi_type_uint8"}, + {"name":"ffi_type_void"} + ] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"com.sun.jna.WString", + "methods":[{"name":"","parameterTypes":["java.lang.String"] }] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.lang.Boolean", + "fields":[ + {"name":"TYPE"}, + {"name":"value"} + ], + "methods":[{"name":"","parameterTypes":["boolean"] }] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.lang.Byte", + "fields":[ + {"name":"TYPE"}, + {"name":"value"} + ], + "methods":[{"name":"","parameterTypes":["byte"] }] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.lang.Character", + "fields":[ + {"name":"TYPE"}, + {"name":"value"} + ], + "methods":[{"name":"","parameterTypes":["char"] }] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.lang.Class", + "methods":[{"name":"getComponentType","parameterTypes":[] }] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.lang.Double", + "fields":[ + {"name":"TYPE"}, + {"name":"value"} + ], + "methods":[{"name":"","parameterTypes":["double"] }] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.lang.Float", + "fields":[ + {"name":"TYPE"}, + {"name":"value"} + ], + "methods":[{"name":"","parameterTypes":["float"] }] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.lang.Integer", + "fields":[ + {"name":"TYPE"}, + {"name":"value"} + ], + "methods":[{"name":"","parameterTypes":["int"] }] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.lang.Long", + "fields":[ + {"name":"TYPE"}, + {"name":"value"} + ], + "methods":[{"name":"","parameterTypes":["long"] }] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.lang.Object", + "methods":[{"name":"toString","parameterTypes":[] }] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.lang.Short", + "fields":[ + {"name":"TYPE"}, + {"name":"value"} + ], + "methods":[{"name":"","parameterTypes":["short"] }] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.lang.String", + "methods":[ + {"name":"","parameterTypes":["byte[]"] }, + {"name":"","parameterTypes":["byte[]","java.lang.String"] }, + {"name":"getBytes","parameterTypes":[] }, + {"name":"getBytes","parameterTypes":["java.lang.String"] }, + {"name":"toCharArray","parameterTypes":[] } + ] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.lang.System", + "methods":[{"name":"getProperty","parameterTypes":["java.lang.String"] }] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.$Proxy43"}, + "name":"java.lang.UnsatisfiedLinkError", + "methods":[{"name":"","parameterTypes":["java.lang.String"] }] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.lang.Void", + "fields":[{"name":"TYPE"}] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.lang.reflect.Method", + "methods":[ + {"name":"getParameterTypes","parameterTypes":[] }, + {"name":"getReturnType","parameterTypes":[] } + ] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.nio.Buffer", + "methods":[{"name":"position","parameterTypes":[] }] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.nio.ByteBuffer", + "methods":[ + {"name":"array","parameterTypes":[] }, + {"name":"arrayOffset","parameterTypes":[] } + ] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.nio.CharBuffer", + "methods":[ + {"name":"array","parameterTypes":[] }, + {"name":"arrayOffset","parameterTypes":[] } + ] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.nio.DoubleBuffer", + "methods":[ + {"name":"array","parameterTypes":[] }, + {"name":"arrayOffset","parameterTypes":[] } + ] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.nio.FloatBuffer", + "methods":[ + {"name":"array","parameterTypes":[] }, + {"name":"arrayOffset","parameterTypes":[] } + ] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.nio.IntBuffer", + "methods":[ + {"name":"array","parameterTypes":[] }, + {"name":"arrayOffset","parameterTypes":[] } + ] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.nio.LongBuffer", + "methods":[ + {"name":"array","parameterTypes":[] }, + {"name":"arrayOffset","parameterTypes":[] } + ] +}, +{ + "condition":{"typeReachable":"org.jline.terminal.impl.jna.win.Kernel32"}, + "name":"java.nio.ShortBuffer", + "methods":[ + {"name":"array","parameterTypes":[] }, + {"name":"arrayOffset","parameterTypes":[] } + ] +} +]