[Azure-IoT-Edge]Can not run with arm64v8/openjdk:8-jre-alpine docker image

罗宇恒 罗宇恒 571 Reputation points
2021-05-26T07:40:51.137+00:00

I am running a Java app with arm64v8/openjdk:8-jre-alpine docker image, and I met following error, how can I fix it?

Start to create client with MQTT protocol
Exception in thread "main" java.lang.UnsatisfiedLinkError: could not load FFI provider jnr.ffi.provider.jffi.Provider
 at jnr.ffi.provider.InvalidRuntime.newLoadError(InvalidRuntime.java:101)
 at jnr.ffi.provider.InvalidRuntime.findType(InvalidRuntime.java:42)
 at jnr.ffi.Struct$NumberField.<init>(Struct.java:872)
 at jnr.ffi.Struct$Unsigned16.<init>(Struct.java:1240)
 at jnr.unixsocket.SockAddrUnix$DefaultSockAddrUnix.<init>(SockAddrUnix.java:209)
 at jnr.unixsocket.SockAddrUnix.create(SockAddrUnix.java:174)
 at jnr.unixsocket.UnixSocketAddress.<init>(UnixSocketAddress.java:53)
 at com.microsoft.azure.sdk.iot.device.hsm.HttpsHsmClient.sendHttpRequestUsingUnixSocket(HttpsHsmClient.java:250)
 at com.microsoft.azure.sdk.iot.device.hsm.HttpsHsmClient.sendRequestBasedOnScheme(HttpsHsmClient.java:226)
 at com.microsoft.azure.sdk.iot.device.hsm.HttpsHsmClient.sign(HttpsHsmClient.java:112)
 at com.microsoft.azure.sdk.iot.device.hsm.HttpHsmSignatureProvider.sign(HttpHsmSignatureProvider.java:85)
 at com.microsoft.azure.sdk.iot.device.hsm.IotHubSasTokenHsmAuthenticationProvider.createNewSasToken(IotHubSasTokenHsmAuthenticationProvider.java:80)
 at com.microsoft.azure.sdk.iot.device.hsm.IotHubSasTokenHsmAuthenticationProvider.create(IotHubSasTokenHsmAuthenticationProvider.java:48)
 at com.microsoft.azure.sdk.iot.device.ModuleClient.createFromEnvironment(ModuleClient.java:235)
 at com.debugapp.App.outputModuleTwin(App.java:170)
 at com.debugapp.App.main(App.java:452)
Caused by: java.lang.UnsatisfiedLinkError: could not get native definition for type: POINTER
 at com.kenai.jffi.Type$Builtin.lookupTypeInfo(Type.java:251)
 at com.kenai.jffi.Type$Builtin.getTypeInfo(Type.java:237)
 at com.kenai.jffi.Type.resolveSize(Type.java:155)
 at com.kenai.jffi.Type.size(Type.java:138)
 at jnr.ffi.provider.jffi.NativeRuntime$TypeDelegate.size(NativeRuntime.java:178)
 at jnr.ffi.provider.AbstractRuntime.<init>(AbstractRuntime.java:48)
 at jnr.ffi.provider.jffi.NativeRuntime.<init>(NativeRuntime.java:57)
 at jnr.ffi.provider.jffi.NativeRuntime.<init>(NativeRuntime.java:41)
 at jnr.ffi.provider.jffi.NativeRuntime$SingletonHolder.<clinit>(NativeRuntime.java:53)
 at jnr.ffi.provider.jffi.NativeRuntime.getInstance(NativeRuntime.java:49)
 at jnr.ffi.provider.jffi.Provider.<init>(Provider.java:29)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
 at java.lang.Class.newInstance(Class.java:442)
 at jnr.ffi.provider.FFIProvider$SystemProviderSingletonHolder.getInstance(FFIProvider.java:68)
 at jnr.ffi.provider.FFIProvider$SystemProviderSingletonHolder.<clinit>(FFIProvider.java:57)
 at jnr.ffi.provider.FFIProvider.getSystemProvider(FFIProvider.java:35)
 at jnr.ffi.Runtime$SingletonHolder.<clinit>(Runtime.java:82)
 at jnr.ffi.Runtime.getSystemRuntime(Runtime.java:67)
 at jnr.unixsocket.SockAddrUnix.<init>(SockAddrUnix.java:46)
 at jnr.unixsocket.SockAddrUnix$DefaultSockAddrUnix.<init>(SockAddrUnix.java:208)
 ... 11 more
Caused by: java.lang.UnsatisfiedLinkError: java.lang.UnsatisfiedLinkError: /tmp/jffi2014448651014323514.so: Error loading shared library ld-linux-aarch64.so.1: No such file or directory (needed by /tmp/jffi2014448651014323514.so)
 at java.lang.ClassLoader$NativeLibrary.load(Native Method)
 at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
 at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
 at java.lang.Runtime.load0(Runtime.java:809)
 at java.lang.System.load(System.java:1086)
 at com.kenai.jffi.internal.StubLoader.loadFromJar(StubLoader.java:380)
 at com.kenai.jffi.internal.StubLoader.load(StubLoader.java:262)
 at com.kenai.jffi.internal.StubLoader.<clinit>(StubLoader.java:453)
 at java.lang.Class.forName0(Native Method)
 at java.lang.Class.forName(Class.java:348)
 at com.kenai.jffi.Init.load(Init.java:68)
 at com.kenai.jffi.Foreign$InstanceHolder.getInstanceHolder(Foreign.java:49)
 at com.kenai.jffi.Foreign$InstanceHolder.<clinit>(Foreign.java:45)
 at com.kenai.jffi.Foreign.getInstance(Foreign.java:103)
 at com.kenai.jffi.Type$Builtin.lookupTypeInfo(Type.java:242)
 at com.kenai.jffi.Type$Builtin.getTypeInfo(Type.java:237)
 at com.kenai.jffi.Type.resolveSize(Type.java:155)
 at com.kenai.jffi.Type.size(Type.java:138)
 at jnr.ffi.provider.jffi.NativeRuntime$TypeDelegate.size(NativeRuntime.java:178)
 at jnr.ffi.provider.AbstractRuntime.<init>(AbstractRuntime.java:48)
 at jnr.ffi.provider.jffi.NativeRuntime.<init>(NativeRuntime.java:57)
 at jnr.ffi.provider.jffi.NativeRuntime.<init>(NativeRuntime.java:41)
 at jnr.ffi.provider.jffi.NativeRuntime$SingletonHolder.<clinit>(NativeRuntime.java:53)
 at jnr.ffi.provider.jffi.NativeRuntime.getInstance(NativeRuntime.java:49)
 at jnr.ffi.provider.jffi.Provider.<init>(Provider.java:29)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
 at java.lang.Class.newInstance(Class.java:442)
 at jnr.ffi.provider.FFIProvider$SystemProviderSingletonHolder.getInstance(FFIProvider.java:68)
 at jnr.ffi.provider.FFIProvider$SystemProviderSingletonHolder.<clinit>(FFIProvider.java:57)
 at jnr.ffi.provider.FFIProvider.getSystemProvider(FFIProvider.java:35)
 at jnr.ffi.Runtime$SingletonHolder.<clinit>(Runtime.java:82)
 at jnr.ffi.Runtime.getSystemRuntime(Runtime.java:67)
 at jnr.unixsocket.SockAddrUnix.<init>(SockAddrUnix.java:46)
 at jnr.unixsocket.SockAddrUnix$DefaultSockAddrUnix.<init>(SockAddrUnix.java:208)
 at jnr.unixsocket.SockAddrUnix.create(SockAddrUnix.java:174)
 at jnr.unixsocket.UnixSocketAddress.<init>(UnixSocketAddress.java:53)
 at com.microsoft.azure.sdk.iot.device.hsm.HttpsHsmClient.sendHttpRequestUsingUnixSocket(HttpsHsmClient.java:250)
 at com.microsoft.azure.sdk.iot.device.hsm.HttpsHsmClient.sendRequestBasedOnScheme(HttpsHsmClient.java:226)
 at com.microsoft.azure.sdk.iot.device.hsm.HttpsHsmClient.sign(HttpsHsmClient.java:112)
 at com.microsoft.azure.sdk.iot.device.hsm.HttpHsmSignatureProvider.sign(HttpHsmSignatureProvider.java:85)
 at com.microsoft.azure.sdk.iot.device.hsm.IotHubSasTokenHsmAuthenticationProvider.createNewSasToken(IotHubSasTokenHsmAuthenticationProvider.java:80)
 at com.microsoft.azure.sdk.iot.device.hsm.IotHubSasTokenHsmAuthenticationProvider.create(IotHubSasTokenHsmAuthenticationProvider.java:48)
 at com.microsoft.azure.sdk.iot.device.ModuleClient.createFromEnvironment(ModuleClient.java:235)
 at com.tc.debugapp.App.outputModuleTwin(App.java:170)
 at com.tc.debugapp.App.main(App.java:452)

 at com.kenai.jffi.Foreign.newLoadError(Foreign.java:72)
 at com.kenai.jffi.Foreign.access$300(Foreign.java:42)
 at com.kenai.jffi.Foreign$InValidInstanceHolder.getForeign(Foreign.java:98)
 at com.kenai.jffi.Foreign.getInstance(Foreign.java:103)
 at com.kenai.jffi.Type$Builtin.lookupTypeInfo(Type.java:242)
 ... 33 more
Caused by: java.lang.UnsatisfiedLinkError: java.lang.UnsatisfiedLinkError: /tmp/jffi2014448651014323514.so: Error loading shared library ld-linux-aarch64.so.1: No such file or directory (needed by /tmp/jffi2014448651014323514.so)
 at java.lang.ClassLoader$NativeLibrary.load(Native Method)
 at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1941)
 at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1824)
 at java.lang.Runtime.load0(Runtime.java:809)
 at java.lang.System.load(System.java:1086)
 at com.kenai.jffi.internal.StubLoader.loadFromJar(StubLoader.java:380)
 at com.kenai.jffi.internal.StubLoader.load(StubLoader.java:262)
 at com.kenai.jffi.internal.StubLoader.<clinit>(StubLoader.java:453)
 at java.lang.Class.forName0(Native Method)
 at java.lang.Class.forName(Class.java:348)
 at com.kenai.jffi.Init.load(Init.java:68)
 at com.kenai.jffi.Foreign$InstanceHolder.getInstanceHolder(Foreign.java:49)
 at com.kenai.jffi.Foreign$InstanceHolder.<clinit>(Foreign.java:45)
 at com.kenai.jffi.Foreign.getInstance(Foreign.java:103)
 at com.kenai.jffi.Type$Builtin.lookupTypeInfo(Type.java:242)
 at com.kenai.jffi.Type$Builtin.getTypeInfo(Type.java:237)
 at com.kenai.jffi.Type.resolveSize(Type.java:155)
 at com.kenai.jffi.Type.size(Type.java:138)
 at jnr.ffi.provider.jffi.NativeRuntime$TypeDelegate.size(NativeRuntime.java:178)
 at jnr.ffi.provider.AbstractRuntime.<init>(AbstractRuntime.java:48)
 at jnr.ffi.provider.jffi.NativeRuntime.<init>(NativeRuntime.java:57)
 at jnr.ffi.provider.jffi.NativeRuntime.<init>(NativeRuntime.java:41)
 at jnr.ffi.provider.jffi.NativeRuntime$SingletonHolder.<clinit>(NativeRuntime.java:53)
 at jnr.ffi.provider.jffi.NativeRuntime.getInstance(NativeRuntime.java:49)
 at jnr.ffi.provider.jffi.Provider.<init>(Provider.java:29)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
 at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
 at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
 at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
 at java.lang.Class.newInstance(Class.java:442)
 at jnr.ffi.provider.FFIProvider$SystemProviderSingletonHolder.getInstance(FFIProvider.java:68)
 at jnr.ffi.provider.FFIProvider$SystemProviderSingletonHolder.<clinit>(FFIProvider.java:57)
 at jnr.ffi.provider.FFIProvider.getSystemProvider(FFIProvider.java:35)
 at jnr.ffi.Runtime$SingletonHolder.<clinit>(Runtime.java:82)
 at jnr.ffi.Runtime.getSystemRuntime(Runtime.java:67)
 at jnr.unixsocket.SockAddrUnix.<init>(SockAddrUnix.java:46)
 at jnr.unixsocket.SockAddrUnix$DefaultSockAddrUnix.<init>(SockAddrUnix.java:208)
 at jnr.unixsocket.SockAddrUnix.create(SockAddrUnix.java:174)
 at jnr.unixsocket.UnixSocketAddress.<init>(UnixSocketAddress.java:53)
 at com.microsoft.azure.sdk.iot.device.hsm.HttpsHsmClient.sendHttpRequestUsingUnixSocket(HttpsHsmClient.java:250)
 at com.microsoft.azure.sdk.iot.device.hsm.HttpsHsmClient.sendRequestBasedOnScheme(HttpsHsmClient.java:226)
 at com.microsoft.azure.sdk.iot.device.hsm.HttpsHsmClient.sign(HttpsHsmClient.java:112)
 at com.microsoft.azure.sdk.iot.device.hsm.HttpHsmSignatureProvider.sign(HttpHsmSignatureProvider.java:85)
 at com.microsoft.azure.sdk.iot.device.hsm.IotHubSasTokenHsmAuthenticationProvider.createNewSasToken(IotHubSasTokenHsmAuthenticationProvider.java:80)
 at com.microsoft.azure.sdk.iot.device.hsm.IotHubSasTokenHsmAuthenticationProvider.create(IotHubSasTokenHsmAuthenticationProvider.java:48)
 at com.microsoft.azure.sdk.iot.device.ModuleClient.createFromEnvironment(ModuleClient.java:235)
 at com.tc.debugapp.App.outputModuleTwin(App.java:170)
 at com.tc.debugapp.App.main(App.java:452)

 at com.kenai.jffi.internal.StubLoader.load(StubLoader.java:274)
 at com.kenai.jffi.internal.StubLoader.<clinit>(StubLoader.java:453)
 at java.lang.Class.forName0(Native Method)
 at java.lang.Class.forName(Class.java:348)
 at com.kenai.jffi.Init.load(Init.java:68)
 at com.kenai.jffi.Foreign$InstanceHolder.getInstanceHolder(Foreign.java:49)
 at com.kenai.jffi.Foreign$InstanceHolder.<clinit>(Foreign.java:45)
 ... 35 more
Azure IoT Edge
Azure IoT Edge
An Azure service that is used to deploy cloud workloads to run on internet of things (IoT) edge devices via standard containers.
543 questions
Azure IoT SDK
Azure IoT SDK
An Azure software development kit that facilitates building applications that connect to Azure IoT services.
208 questions
{count} votes