Attempting to build AWS IoT Client with GraalVM native-image

Install with Brew (20.2.0):

brew cask install graalvm-ce-java11
export PATH=/Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.3.0/Contents/Home/bin:"$PATH"
export JAVA_HOME=/Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.3.0/Contents/Home

Then install native image with gu:

gu list
gu available
gu install native-image

It's a big bucket of fail but it looks like this:

./gradlew build
native-image -cp build/libs/aws-iot-client.jar com.awslabs.iot.client.applications.AwsIotClientConsole --no-fallback --allow-incomplete-classpath -H:+TraceClassInitialization --initialize-at-build-time

And it looks like it is working but bombs out like this:

[com.awslabs.iot.client.applications.awsiotclientconsole:48479]    classlist:  13,560.18 ms,  1.69 GB
[com.awslabs.iot.client.applications.awsiotclientconsole:48479]        (cap):   6,927.93 ms,  1.69 GB
[com.awslabs.iot.client.applications.awsiotclientconsole:48479]        setup:   9,198.77 ms,  1.69 GB
[com.awslabs.iot.client.applications.awsiotclientconsole:48479]     (clinit):     404.67 ms,  4.80 GB
[com.awslabs.iot.client.applications.awsiotclientconsole:48479]   (typeflow):  15,778.06 ms,  4.80 GB
[com.awslabs.iot.client.applications.awsiotclientconsole:48479]    (objects):  14,657.51 ms,  4.80 GB
[com.awslabs.iot.client.applications.awsiotclientconsole:48479]   (features):   1,050.43 ms,  4.80 GB
[com.awslabs.iot.client.applications.awsiotclientconsole:48479]     analysis:  33,005.28 ms,  4.80 GB
[com.awslabs.iot.client.applications.awsiotclientconsole:48479]     universe:   1,079.84 ms,  4.80 GB
[com.awslabs.iot.client.applications.awsiotclientconsole:48479]      (parse):   2,304.02 ms,  4.80 GB
[com.awslabs.iot.client.applications.awsiotclientconsole:48479]     (inline):   5,410.64 ms,  5.84 GB
[com.awslabs.iot.client.applications.awsiotclientconsole:48479]    (compile):  19,151.45 ms,  5.68 GB
[com.awslabs.iot.client.applications.awsiotclientconsole:48479]      compile:  29,999.24 ms,  5.68 GB
[com.awslabs.iot.client.applications.awsiotclientconsole:48479]        image:   4,769.55 ms,  5.64 GB
[com.awslabs.iot.client.applications.awsiotclientconsole:48479]        write:     967.82 ms,  5.64 GB
Fatal error:java.lang.RuntimeException: java.lang.RuntimeException: There was an error linking the native image: Linker command exited with 1

Linker command executed:
/usr/bin/cc -Wl,-no_compact_unwind -Wl,-exported_symbols_list -Wl,/var/folders/9c/tpt08_m11dx1rfdl906jcdyn5l_v81/T/SVM-8243022311279386964/exported_symbols.list -Wl,-x -arch x86_64 -o /Users/timmatt/Dropbox/github/aws-iot-client/com.awslabs.iot.client.applications.awsiotclientconsole /var/folders/9c/tpt08_m11dx1rfdl906jcdyn5l_v81/T/SVM-8243022311279386964/com.awslabs.iot.client.applications.awsiotclientconsole.o /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64/liblibchelper.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libnet.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64/libffi.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64/libdarwin.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libextnet.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libnio.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libjava.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libfdlibm.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libzip.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64/libjvm.a -v -L/var/folders/9c/tpt08_m11dx1rfdl906jcdyn5l_v81/T/SVM-8243022311279386964 -L/Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64 -L/Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64 -Wl,-framework,CoreServices -Wl,-framework,Foundation -lpthread -ldl -lz

Linker command output:
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
 "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch x86_64 -macosx_version_min 10.14.0 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk -o /Users/timmatt/Dropbox/github/aws-iot-client/com.awslabs.iot.client.applications.awsiotclientconsole -L/var/folders/9c/tpt08_m11dx1rfdl906jcdyn5l_v81/T/SVM-8243022311279386964 -L/Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64 -L/Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64 -no_compact_unwind -exported_symbols_list /var/folders/9c/tpt08_m11dx1rfdl906jcdyn5l_v81/T/SVM-8243022311279386964/exported_symbols.list -x /var/folders/9c/tpt08_m11dx1rfdl906jcdyn5l_v81/T/SVM-8243022311279386964/com.awslabs.iot.client.applications.awsiotclientconsole.o /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64/liblibchelper.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libnet.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64/libffi.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64/libdarwin.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libextnet.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libnio.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libjava.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libfdlibm.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libzip.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64/libjvm.a -framework CoreServices -framework Foundation -lpthread -ldl -lz -L/usr/local/lib -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/10.0.1/lib/darwin/libclang_rt.osx.a
Undefined symbols for architecture x86_64:
  "_Java_java_util_prefs_MacOSXPreferencesFile_addNode", referenced from:
      ___svm_vm_target_libraries in com.awslabs.iot.client.applications.awsiotclientconsole.o
  "_Java_java_util_prefs_MacOSXPreferencesFile_synchronize", referenced from:
      ___svm_vm_target_libraries in com.awslabs.iot.client.applications.awsiotclientconsole.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at java.base/java.util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:600)
	at java.base/java.util.concurrent.ForkJoinTask.get(ForkJoinTask.java:1006)
	at com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:480)
	at com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:349)
	at com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:508)
	at com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:114)
	at com.oracle.svm.hosted.NativeImageGeneratorRunner$JDK9Plus.main(NativeImageGeneratorRunner.java:537)
Caused by: java.lang.RuntimeException: There was an error linking the native image: Linker command exited with 1

Linker command executed:
/usr/bin/cc -Wl,-no_compact_unwind -Wl,-exported_symbols_list -Wl,/var/folders/9c/tpt08_m11dx1rfdl906jcdyn5l_v81/T/SVM-8243022311279386964/exported_symbols.list -Wl,-x -arch x86_64 -o /Users/timmatt/Dropbox/github/aws-iot-client/com.awslabs.iot.client.applications.awsiotclientconsole /var/folders/9c/tpt08_m11dx1rfdl906jcdyn5l_v81/T/SVM-8243022311279386964/com.awslabs.iot.client.applications.awsiotclientconsole.o /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64/liblibchelper.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libnet.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64/libffi.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64/libdarwin.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libextnet.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libnio.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libjava.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libfdlibm.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libzip.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64/libjvm.a -v -L/var/folders/9c/tpt08_m11dx1rfdl906jcdyn5l_v81/T/SVM-8243022311279386964 -L/Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64 -L/Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64 -Wl,-framework,CoreServices -Wl,-framework,Foundation -lpthread -ldl -lz

Linker command output:
Apple LLVM version 10.0.1 (clang-1001.0.46.4)
Target: x86_64-apple-darwin18.7.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
 "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch x86_64 -macosx_version_min 10.14.0 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk -o /Users/timmatt/Dropbox/github/aws-iot-client/com.awslabs.iot.client.applications.awsiotclientconsole -L/var/folders/9c/tpt08_m11dx1rfdl906jcdyn5l_v81/T/SVM-8243022311279386964 -L/Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64 -L/Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64 -no_compact_unwind -exported_symbols_list /var/folders/9c/tpt08_m11dx1rfdl906jcdyn5l_v81/T/SVM-8243022311279386964/exported_symbols.list -x /var/folders/9c/tpt08_m11dx1rfdl906jcdyn5l_v81/T/SVM-8243022311279386964/com.awslabs.iot.client.applications.awsiotclientconsole.o /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64/liblibchelper.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libnet.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64/libffi.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64/libdarwin.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libextnet.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libnio.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libjava.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libfdlibm.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/static/darwin-amd64/libzip.a /Library/Java/JavaVirtualMachines/graalvm-ce-java11-20.2.0/Contents/Home/lib/svm/clibraries/darwin-amd64/libjvm.a -framework CoreServices -framework Foundation -lpthread -ldl -lz -L/usr/local/lib -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/10.0.1/lib/darwin/libclang_rt.osx.a
Undefined symbols for architecture x86_64:
  "_Java_java_util_prefs_MacOSXPreferencesFile_addNode", referenced from:
      ___svm_vm_target_libraries in com.awslabs.iot.client.applications.awsiotclientconsole.o
  "_Java_java_util_prefs_MacOSXPreferencesFile_synchronize", referenced from:
      ___svm_vm_target_libraries in com.awslabs.iot.client.applications.awsiotclientconsole.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

	at com.oracle.svm.hosted.image.NativeBootImageViaCC.handleLinkerFailure(NativeBootImageViaCC.java:459)
	at com.oracle.svm.hosted.image.NativeBootImageViaCC.write(NativeBootImageViaCC.java:434)
	at com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:677)
	at com.oracle.svm.hosted.NativeImageGenerator.lambda$run$0(NativeImageGenerator.java:468)
	at java.base/java.util.concurrent.ForkJoinTask$AdaptedRunnableAction.exec(ForkJoinTask.java:1407)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183)
Error: Image build request failed with exit status 1

Neglected Github issue here - https://github.com/oracle/graal/issues/2063

Removed Paho and it built something but it failed on Sun security stuff. Fixed that with this:

native-image -cp build/libs/aws-iot-client.jar com.awslabs.iot.client.applications.AwsIotClientConsole --no-fallback --allow-incomplete-classpath -H:+TraceClassInitialization --initialize-at-build-time --enable-http --enable-https --enable-url-protocols=http,https --enable-all-security-services

Then the logger failed. Created a reflection configuration file reflection-config.json:

[
    {
        "name": "java.lang.String"
    },
    {
        "name": "java.lang.Thread"
    },
    {
        "name": "org.apache.commons.logging.LogFactory"
    },
    {
        "name": "org.apache.commons.logging.impl.SimpleLog"
    }
]

And then used this command:

native-image -cp build/libs/aws-iot-client.jar com.awslabs.iot.client.applications.AwsIotClientConsole --no-fallback --allow-incomplete-classpath -H:+TraceClassInitialization --initialize-at-build-time --enable-http --enable-https --enable-url-protocols=http,https --enable-all-security-services -H:ReflectionConfigurationFiles=reflection-config.json

And it still fails. Cool. It says this:

Caused by: java.lang.InstantiationException: Type `org.apache.commons.logging.impl.LogFactoryImpl` can not be instantiated reflectively as it does not have a no-parameter constructor or the no-parameter constructor has not been added explicitly to the native image.

This other command at least gives a different HTTP error:

native-image -cp build/libs/aws-iot-client.jar com.awslabs.iot.client.applications.AwsIotClientConsole --no-fallback --allow-incomplete-classpath -H:+TraceClassInitialization --initialize-at-build-time --enable-http --enable-https --enable-url-protocols=http,https --enable-all-security-services -H:ReflectionConfigurationFiles=reflection-config.json --no-server --rerun-class-initialization-at-runtime=javax.net.ssl.SSLContext -H:-UseServiceLoaderFeature

Which looks like this:

Exception in thread "main" software.amazon.awssdk.core.exception.SdkClientException: Unable to load an HTTP implementation from any provider in the chain. You must declare a dependency on an appropriate HTTP implementation or pass in an SdkHttpClient explicitly to the client builder.
[
    {
        "name": "java.lang.String"
    },
    {
        "name": "java.lang.Thread"
    },
    {
        "allDeclaredClasses": true,
        "allDeclaredConstructors": true,
        "allDeclaredMethods": true,
        "allPublicClasses": true,
        "allPublicConstructors": true,
        "allPublicMethods": true,
        "name": "org.apache.commons.logging.impl.LogFactoryImpl"
    },
    {
        "allDeclaredClasses": true,
        "allDeclaredConstructors": true,
        "allDeclaredMethods": true,
        "allPublicClasses": true,
        "allPublicConstructors": true,
        "allPublicMethods": true,
        "name": "java.lang.String"
    },
    {
        "allDeclaredClasses": true,
        "allDeclaredConstructors": true,
        "allDeclaredMethods": true,
        "allPublicClasses": true,
        "allPublicConstructors": true,
        "allPublicMethods": true,
        "name": "org.apache.commons.logging.LogFactory"
    },
    {
        "allDeclaredClasses": true,
        "allDeclaredConstructors": true,
        "allDeclaredMethods": true,
        "allPublicClasses": true,
        "allPublicConstructors": true,
        "allPublicMethods": true,
        "name": "org.apache.commons.logging.impl.SimpleLog"
    }
]

New command based on error message:

native-image -cp build/libs/aws-iot-client.jar com.awslabs.iot.client.applications.AwsIotClientConsole --no-fallback --allow-incomplete-classpath -H:+TraceClassInitialization --initialize-at-build-time --enable-http --enable-https --enable-url-protocols=http,https --enable-all-security-services -H:ReflectionConfigurationFiles=reflection-config.json --no-server --rerun-class-initialization-at-runtime=javax.net.ssl.SSLContext -H:-UseServiceLoaderFeature -H:DynamicProxyConfigurationResources=org.apache.http.conn.HttpClientConnectionManager,org.apache.http.pool.ConnPoolControl,software.amazon.awssdk.http.apache.internal.conn.Wrapped

That failed Could not find dynamic proxy configuration resource "org.apache.http.conn.HttpClientConnectionManager"

Then created dynamic-proxies.json based on this https://github.com/oracle/graal/issues/1028:

dynamic-proxies.json

[
  ["org.apache.http.conn.HttpClientConnectionManager", "org.apache.http.pool.ConnPoolControl", "com.amazonaws.http.conn.Wrapped"]
]

New command:

native-image -cp build/libs/aws-iot-client.jar com.awslabs.iot.client.applications.AwsIotClientConsole --no-fallback --allow-incomplete-classpath -H:+TraceClassInitialization --initialize-at-build-time --enable-http --enable-https --enable-url-protocols=http,https --enable-all-security-services -H:ReflectionConfigurationFiles=reflection-config.json --no-server --rerun-class-initialization-at-runtime=javax.net.ssl.SSLContext -H:-UseServiceLoaderFeature -H:DynamicProxyConfigurationFiles="dynamic-proxies.json"

That no longer works with 20.3.0:

native-image -cp build/libs/aws-iot-client.jar com.awslabs.iot.client.applications.AwsIotClientConsole --no-fallback --allow-incomplete-classpath --initialize-at-build-time --enable-http --enable-https --enable-url-protocols=http,https --enable-all-security-services -H:ReflectionConfigurationFiles=reflection-config.json --no-server --rerun-class-initialization-at-runtime=javax.net.ssl.SSLContext -H:-UseServiceLoaderFeature -H:DynamicProxyConfigurationFiles="dynamic-proxies.json"

Deprecation warning so I did this:

native-image -cp build/libs/aws-iot-client.jar com.awslabs.iot.client.applications.AwsIotClientConsole --no-fallback --allow-incomplete-classpath --initialize-at-build-time --enable-http --enable-https --enable-url-protocols=http,https --enable-all-security-services -H:ReflectionConfigurationFiles=reflection-config.json --no-server --initialize-at-run-time=javax.net.ssl.SSLContext -H:-UseServiceLoaderFeature -H:DynamicProxyConfigurationFiles="dynamic-proxies.json"

Generate list of every single AWS class for inclusion in reflection:

unzip -t build/libs/aws-iot-client.jar | grep "\.class" | awk ' {print $2} ' | sed 's/\//./g' | sed 's/.class$//' | grep "^software" | sed 's/\(.*\)/{ "name" : "\1", "allDeclaredConstructors" : true, "allPublicConstructors" : true, "allDeclaredMethods" : true, "allPublicMethods" : true, "allDeclaredClasses" : true, "allPublicClasses" : true },/' > x

New new new command:

./gradlew build ;and time native-image -cp build/libs/aws-iot-client.jar com.awslabs.iot.client.applications.AwsIotClientConsole --no-fallback --allow-incomplete-classpath --initialize-at-build-time=io.netty,com.fasterxml.jackson,org.slf4j,org.apache.commons,org.apache.log4j,software.amazon.awssdk --initialize-at-run-time=io.netty.handler.codec.http.HttpObjectEncoder,io.netty.handler.codec.http.websocketx.WebSocket00FrameEncoder,io.netty.handler.codec.http2.Http2CodecUtil,io.netty.handler.codec.http2.DefaultHttp2FrameWriter,io.netty.handler.ssl.ReferenceCountedOpenSslServerContext,io.netty.handler.ssl.JdkNpnApplicationProtocolNegotiator,io.netty.handler.ssl.ReferenceCountedOpenSslEngine,io.netty.handler.ssl.ConscryptAlpnSslEngine,io.netty.handler.ssl.JettyNpnSslEngine,io.netty.handler.ssl.ReferenceCountedOpenSslClientContext --enable-http --enable-https --enable-url-protocols=http,https --enable-all-security-services --no-server -H:-UseServiceLoaderFeature -H:ReflectionConfigurationFiles=reflection-config.json -H:DynamicProxyConfigurationFiles=dynamic-proxies.json --initialize-at-run-time='io.netty.handler.ssl.ReferenceCountedOpenSslContext,io.netty.handler.ssl.JettyAlpnSslEngine$ServerEngine,io.netty.handler.ssl.JettyAlpnSslEngine$ClientEngine,io.netty.channel.unix.IovArray,io.netty.channel.epoll.EpollEventLoop,io.netty.channel.epoll.Native,io.netty.channel.unix.Errors,io.netty.channel.unix.Limits,io.netty.channel.unix.Socket'