Open ShannonDing opened 4 years ago
Very similar to https://github.com/oracle/graal/issues/668, but this issue seems to the problem of the OpenSSL while not the JDK default SunEC.
I also get an unsatisfied link error with GraalVM 20.0.0.
I've treid various gRPC java versions and get this at runtime:
java.lang.UnsatisfiedLinkError: io.grpc.netty.shaded.io.netty.internal.tcnative.NativeStaticallyReferencedJniMethods.sslOpCipherServerPreference()I [symbol: Java_io_grpc_netty_shaded_io_netty_internal_tcnative_NativeStaticallyReferencedJniMethods_sslOpCipherServerPreference or Java_io_grpc_netty_shaded_io_netty_internal_tcnative_NativeStaticallyReferencedJniMethods_sslOpCipherServerPreference__]
at com.oracle.svm.jni.access.JNINativeLinkage.getOrFindEntryPoint(JNINativeLinkage.java:145)
at com.oracle.svm.jni.JNIGeneratedMethodSupport.nativeCallAddress(JNIGeneratedMethodSupport.java:57)
at io.grpc.netty.shaded.io.netty.internal.tcnative.NativeStaticallyReferencedJniMethods.sslOpCipherServerPreference(NativeStaticallyReferencedJniMethods.java)
at io.grpc.netty.shaded.io.netty.internal.tcnative.SSL.<clinit>(SSL.java:67)
at com.oracle.svm.core.hub.ClassInitializationInfo.invokeClassInitializer(ClassInitializationInfo.java:350)
at com.oracle.svm.core.hub.ClassInitializationInfo.initialize(ClassInitializationInfo.java:270)
at java.lang.Class.ensureInitialized(DynamicHub.java:467)
at io.grpc.netty.shaded.io.netty.handler.ssl.OpenSsl.<clinit>(OpenSsl.java:123)
at com.oracle.svm.core.hub.ClassInitializationInfo.invokeClassInitializer(ClassInitializationInfo.java:350)
at com.oracle.svm.core.hub.ClassInitializationInfo.initialize(ClassInitializationInfo.java:270)
at java.lang.Class.ensureInitialized(DynamicHub.java:467)
at io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts.defaultSslProvider(GrpcSslContexts.java:244)
at io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:171)
at io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:120)
Getting the same error, @ShannonDing did you ever figure this out?
Getting the same error, @ShannonDing did you ever figure this out?
Sorry, I have not found a good solution as so far, and I am still looking forward to some guidance or suggestions to solve this problem from the Graal community.
Any news with this issue?
Hello, Google is working on official support for the client libraries with native image compilation here: https://github.com/GoogleCloudPlatform/google-cloud-graalvm-support
You can try following the instructions and adding the dependency to your project; we were able to find the solution to the native library error.
Problem statement:
Compilation works fine on JDK8(not openJDK) with GraalVM 19.3.0 EE for linux for my projects, but report runtime error below on start. java.lang.UnsatisfiedLinkError: failed to load the required native library
Reproduction: Os: centos7.2 docker JDK: Oracle JDK8 GraalVM: graalvm-ee-java8-linux-amd64-19.3.0.tar.gz native-image: native-image-installable-svm-svmee-java8-linux-amd64-19.3.0.jar netty: 4.0.42.Final
build parameters
native-image --shared -H:Path=./build \ --no-server \ --verbose \ -H:ReflectionConfigurationFiles=./tools/graal/reflection_config.json \ -H:Name=client_core \ -H:CLibraryPath=./src/main/c/native \ -jar ./target/client.jar \ -Dio.netty.noUnsafe=true \ --report-unsupported-elements-at-runtime \ --allow-incomplete-classpath \ -H:+ReportExceptionStackTraces \ --enable-all-security-services \ --enable-url-protocols=https \ -H:EnableURLProtocols=http \ --initialize-at-build-time \ --initialize-at-run-time=io.netty.handler.ssl.util.BouncyCastleSelfSignedCertGenerator,io.netty.handler.ssl.ReferenceCountedOpenSslClientContext,io.netty.handler.ssl.ReferenceCountedOpenSslServerContext,io.netty.handler.ssl.JdkNpnApplicationProtocolNegotiator,io.netty.handler.ssl.JdkAlpnApplicationProtocolNegotiator,io.netty.handler.ssl.util.ThreadLocalInsecureRandom,io.netty.handler.ssl.JettyNpnSslEngine,io.netty.handler.ssl.ReferenceCountedOpenSslEngine,io.netty.handler.ssl.ConscryptAlpnSslEngine,io.netty.handler.ssl.JettyAlpnSslEngine$ClientEngine,io.netty.handler.ssl.JettyAlpnSslEngine$ServerEngine,io.netty.util.internal.ObjectCleaner,io.netty.handler.ssl.util.InsecureTrustManagerFactory
build log: Executing [ /root/tools/graalvm-ee-java8-19.3.0/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 \ -Xmx1676610760 \ -Duser.country=US \ -Duser.language=en \ -Dorg.graalvm.version=19.3.0 \ -Dorg.graalvm.config=EE \ -Dcom.oracle.graalvm.isaot=true \ -Djvmci.class.path.append=/root/tools/graalvm-ee-java8-19.3.0/jre/lib/jvmci/graal.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/jvmci/enterprise-graal.jar \ -javaagent:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/svm.jar \ -Djdk.internal.lambda.disableEagerInitialization=true \ -Djdk.internal.lambda.eagerlyInitialize=false \ -Djava.lang.invoke.InnerClassLambdaMetafactory.initializeLambdas=false \ -Dio.netty.noUnsafe=true \ -Xbootclasspath/a:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/boot/graaljs-scriptengine.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/boot/graal-sdk.jar \ -cp \ /root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/llvm-wrapper-shadowed.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/objectfile.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/llvm-platform-specific-shadowed.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/svm.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/graal-llvm.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/pointsto.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/javacpp-shadowed.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/svm-enterprise-llvm.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/svm-enterprise.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/svm-llvm.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/jvmci/graal.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/jvmci/jvmci-api.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/jvmci/jvmci-hotspot.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/jvmci/graal-management.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/jvmci/enterprise-graal.jar \ com.oracle.svm.hosted.NativeImageGeneratorRunner \ -watchpid \ 49131 \ -imagecp \ /root/tools/graalvm-ee-java8-19.3.0/jre/lib/boot/graaljs-scriptengine.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/boot/graal-sdk.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/llvm-wrapper-shadowed.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/objectfile.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/llvm-platform-specific-shadowed.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/svm.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/graal-llvm.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/pointsto.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/javacpp-shadowed.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/svm-enterprise-llvm.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/svm-enterprise.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/builder/svm-llvm.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/jvmci/graal.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/jvmci/jvmci-api.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/jvmci/jvmci-hotspot.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/jvmci/graal-management.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/jvmci/enterprise-graal.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/library-support.jar:/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/library-support-enterprise.jar:/root/OpenSource/client/target/client-full.jar \ -H:+SharedLibrary \ -H:Class=org.apache.rocketmq.graalvm.CInterface \ -H:+ReportUnsupportedElementsAtRuntime \ -H:+AllowIncompleteClasspath \ -H:+ReportExceptionStackTraces \ -H:+EnableAllSecurityServices \ -H:EnableURLProtocols=https \ -H:EnableURLProtocols=http \ -H:ClassInitialization=:build_time \ -H:ClassInitialization=io.netty.handler.ssl.util.BouncyCastleSelfSignedCertGenerator:run_time,io.netty.handler.ssl.ReferenceCountedOpenSslClientContext:run_time,io.netty.handler.ssl.ReferenceCountedOpenSslServerContext:run_time,io.netty.handler.ssl.JdkNpnApplicationProtocolNegotiator:run_time,io.netty.handler.ssl.JdkAlpnApplicationProtocolNegotiator:run_time,io.netty.handler.ssl.util.ThreadLocalInsecureRandom:run_time,io.netty.handler.ssl.JettyNpnSslEngine:run_time,io.netty.handler.ssl.ReferenceCountedOpenSslEngine:run_time,io.netty.handler.ssl.ConscryptAlpnSslEngine:run_time,io.netty.handler.ssl.JettyAlpnSslEngine:run_time,io.netty.handler.ssl.JettyAlpnSslEngine:run_time,io.netty.util.internal.ObjectCleaner:run_time,io.netty.handler.ssl.util.InsecureTrustManagerFactory:run_time \ -H:CLibraryPath=/root/tools/graalvm-ee-java8-19.3.0/jre/lib/svm/clibraries/linux-amd64,/root/OpenSource/client/src/main/c/native \ -H:ReflectionConfigurationFiles=/root/OpenSource/client/tools/graal/reflection_config.json \ -H:Path=/root/OpenSource/client/build \ -H:Name=client-full ]