docker-maven-plugin: java.lang.UnsatisfiedLinkError: could not load FFI provider jnr.ffi.provider.jffi.Provider

[INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 26.235 s [INFO] Finished at: 2019-08-12T14:50:22-04:00 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal io.fabric8:docker-maven-plugin:0.30.0:start (start-docker-containers) on project outbound-messaging-service: Execution start-docker-containers of goal io.fabric8:docker-maven-plugin:0.30.0:start failed: An API incompatibility was encountered while executing io.fabric8:docker-maven-plugin:0.30.0:start: java.lang.UnsatisfiedLinkError: could not load FFI provider jnr.ffi.provider.jffi.Provider [ERROR] ----------------------------------------------------- [ERROR] realm = plugin>io.fabric8:docker-maven-plugin:0.30.0 [ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy [ERROR] urls[0] = file:/Users/sathishkumarvijayakumar/.m2/repository/io/fabric8/docker-maven-plugin/0.30.0/docker-maven-plugin-0.30.0.jar [ERROR] urls[1] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/apache/httpcomponents/httpclient/4.5.5/httpclient-4.5.5.jar [ERROR] urls[2] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/apache/httpcomponents/httpcore/4.4.9/httpcore-4.4.9.jar [ERROR] urls[3] = file:/Users/sathishkumarvijayakumar/.m2/repository/commons-logging/commons-logging/1.2/commons-logging-1.2.jar [ERROR] urls[4] = file:/Users/sathishkumarvijayakumar/.m2/repository/commons-codec/commons-codec/1.10/commons-codec-1.10.jar [ERROR] urls[5] = file:/Users/sathishkumarvijayakumar/.m2/repository/com/github/jnr/jnr-unixsocket/0.22/jnr-unixsocket-0.22.jar [ERROR] urls[6] = file:/Users/sathishkumarvijayakumar/.m2/repository/com/github/jnr/jnr-ffi/2.1.9/jnr-ffi-2.1.9.jar [ERROR] urls[7] = file:/Users/sathishkumarvijayakumar/.m2/repository/com/github/jnr/jffi/1.2.17/jffi-1.2.17.jar [ERROR] urls[8] = file:/Users/sathishkumarvijayakumar/.m2/repository/com/github/jnr/jffi/1.2.16/jffi-1.2.16-native.jar [ERROR] urls[9] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/ow2/asm/asm/5.0.3/asm-5.0.3.jar [ERROR] urls[10] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/ow2/asm/asm-commons/5.0.3/asm-commons-5.0.3.jar [ERROR] urls[11] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/ow2/asm/asm-analysis/5.0.3/asm-analysis-5.0.3.jar [ERROR] urls[12] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/ow2/asm/asm-tree/5.0.3/asm-tree-5.0.3.jar [ERROR] urls[13] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/ow2/asm/asm-util/5.0.3/asm-util-5.0.3.jar [ERROR] urls[14] = file:/Users/sathishkumarvijayakumar/.m2/repository/com/github/jnr/jnr-a64asm/1.0.0/jnr-a64asm-1.0.0.jar [ERROR] urls[15] = file:/Users/sathishkumarvijayakumar/.m2/repository/com/github/jnr/jnr-x86asm/1.0.2/jnr-x86asm-1.0.2.jar [ERROR] urls[16] = file:/Users/sathishkumarvijayakumar/.m2/repository/com/github/jnr/jnr-constants/0.9.11/jnr-constants-0.9.11.jar [ERROR] urls[17] = file:/Users/sathishkumarvijayakumar/.m2/repository/com/github/jnr/jnr-enxio/0.20/jnr-enxio-0.20.jar [ERROR] urls[18] = file:/Users/sathishkumarvijayakumar/.m2/repository/com/github/jnr/jnr-posix/3.0.47/jnr-posix-3.0.47.jar [ERROR] urls[19] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/apache/commons/commons-lang3/3.6/commons-lang3-3.6.jar [ERROR] urls[20] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/apache/commons/commons-text/1.1/commons-text-1.1.jar [ERROR] urls[21] = file:/Users/sathishkumarvijayakumar/.m2/repository/com/google/code/gson/gson/2.8.5/gson-2.8.5.jar [ERROR] urls[22] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/bouncycastle/bcpkix-jdk15on/1.57/bcpkix-jdk15on-1.57.jar [ERROR] urls[23] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/bouncycastle/bcprov-jdk15on/1.57/bcprov-jdk15on-1.57.jar [ERROR] urls[24] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/apache/maven/plugins/maven-assembly-plugin/3.1.0/maven-assembly-plugin-3.1.0.jar [ERROR] urls[25] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar [ERROR] urls[26] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar [ERROR] urls[27] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar [ERROR] urls[28] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar [ERROR] urls[29] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar [ERROR] urls[30] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar [ERROR] urls[31] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/apache/maven/shared/maven-common-artifact-filters/3.0.1/maven-common-artifact-filters-3.0.1.jar [ERROR] urls[32] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/apache/maven/shared/maven-shared-utils/3.1.0/maven-shared-utils-3.1.0.jar [ERROR] urls[33] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/apache/maven/shared/maven-artifact-transfer/0.9.0/maven-artifact-transfer-0.9.0.jar [ERROR] urls[34] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/codehaus/plexus/plexus-archiver/3.5/plexus-archiver-3.5.jar [ERROR] urls[35] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/apache/commons/commons-compress/1.14/commons-compress-1.14.jar [ERROR] urls[36] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/iq80/snappy/snappy/0.4/snappy-0.4.jar [ERROR] urls[37] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/tukaani/xz/1.6/xz-1.6.jar [ERROR] urls[38] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/apache/maven/shared/file-management/3.0.0/file-management-3.0.0.jar [ERROR] urls[39] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/apache/maven/shared/maven-shared-io/3.0.0/maven-shared-io-3.0.0.jar [ERROR] urls[40] = file:/Users/sathishkumarvijayakumar/.m2/repository/commons-io/commons-io/2.5/commons-io-2.5.jar [ERROR] urls[41] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/apache/maven/shared/maven-filtering/3.1.1/maven-filtering-3.1.1.jar [ERROR] urls[42] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/sonatype/plexus/plexus-build-api/0.0.7/plexus-build-api-0.0.7.jar [ERROR] urls[43] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/codehaus/plexus/plexus-io/3.0.0/plexus-io-3.0.0.jar [ERROR] urls[44] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/apache/maven/maven-archiver/3.2.0/maven-archiver-3.2.0.jar [ERROR] urls[45] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/codehaus/plexus/plexus-utils/3.1.0/plexus-utils-3.1.0.jar [ERROR] urls[46] = file:/Users/sathishkumarvijayakumar/.m2/repository/joda-time/joda-time/2.9.9/joda-time-2.9.9.jar [ERROR] urls[47] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/yaml/snakeyaml/1.18/snakeyaml-1.18.jar [ERROR] urls[48] = file:/Users/sathishkumarvijayakumar/.m2/repository/com/google/guava/guava/23.0-android/guava-23.0-android.jar [ERROR] urls[49] = file:/Users/sathishkumarvijayakumar/.m2/repository/com/google/code/findbugs/jsr305/1.3.9/jsr305-1.3.9.jar [ERROR] urls[50] = file:/Users/sathishkumarvijayakumar/.m2/repository/com/google/errorprone/error_prone_annotations/2.0.18/error_prone_annotations-2.0.18.jar [ERROR] urls[51] = file:/Users/sathishkumarvijayakumar/.m2/repository/com/google/j2objc/j2objc-annotations/1.1/j2objc-annotations-1.1.jar [ERROR] urls[52] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/codehaus/mojo/animal-sniffer-annotations/1.14/animal-sniffer-annotations-1.14.jar [ERROR] urls[53] = file:/Users/sathishkumarvijayakumar/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.24/plexus-interpolation-1.24.jar [ERROR] Number of foreign imports: 1 [ERROR] import: Entry[import from realm ClassRealm[maven.api, parent: null]] [ERROR] [ERROR] ----------------------------------------------------- [ERROR] : could not get native definition for type: POINTER: java.lang.UnsatisfiedLinkError: /private/var/folders/yz/pljt90293ybblfz30zk2_0900000gn/T/jffi17457546410635727626.dylib: dlopen(/private/var/folders/yz/pljt90293ybblfz30zk2_0900000gn/T/jffi17457546410635727626.dylib, 1): no suitable image found. Did find: [ERROR] /private/var/folders/yz/pljt90293ybblfz30zk2_0900000gn/T/jffi17457546410635727626.dylib: code signature in (/private/var/folders/yz/pljt90293ybblfz30zk2_0900000gn/T/jffi17457546410635727626.dylib) not valid for use in process using Library Validation: mapped file has no cdhash, completely unsigned? Code has to be at least ad-hoc signed. [ERROR] at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method) [ERROR] at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2430) [ERROR] at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2487) [ERROR] at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2684) [ERROR] at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2617) [ERROR] at java.base/java.lang.Runtime.load0(Runtime.java:767) [ERROR] at java.base/java.lang.System.load(System.java:1831) [ERROR] at com.kenai.jffi.internal.StubLoader.loadFromJar(StubLoader.java:376) [ERROR] at com.kenai.jffi.internal.StubLoader.load(StubLoader.java:258) [ERROR] at com.kenai.jffi.internal.StubLoader.<clinit>(StubLoader.java:449) [ERROR] at java.base/java.lang.Class.forName0(Native Method) [ERROR] at java.base/java.lang.Class.forName(Class.java:398) [ERROR] at com.kenai.jffi.Init.load(Init.java:68) [ERROR] at com.kenai.jffi.Foreign$InstanceHolder.getInstanceHolder(Foreign.java:49) [ERROR] at com.kenai.jffi.Foreign$InstanceHolder.<clinit>(Foreign.java:45) [ERROR] at com.kenai.jffi.Foreign.getInstance(Foreign.java:103) [ERROR] at com.kenai.jffi.Type$Builtin.lookupTypeInfo(Type.java:242) [ERROR] at com.kenai.jffi.Type$Builtin.getTypeInfo(Type.java:237) [ERROR] at com.kenai.jffi.Type.resolveSize(Type.java:155) [ERROR] at com.kenai.jffi.Type.size(Type.java:138) [ERROR] at jnr.ffi.provider.jffi.NativeRuntime$TypeDelegate.size(NativeRuntime.java:178) [ERROR] at jnr.ffi.provider.AbstractRuntime.<init>(AbstractRuntime.java:48) [ERROR] at jnr.ffi.provider.jffi.NativeRuntime.<init>(NativeRuntime.java:57) [ERROR] at jnr.ffi.provider.jffi.NativeRuntime.<init>(NativeRuntime.java:41) [ERROR] at jnr.ffi.provider.jffi.NativeRuntime$SingletonHolder.<clinit>(NativeRuntime.java:53) [ERROR] at jnr.ffi.provider.jffi.NativeRuntime.getInstance(NativeRuntime.java:49) [ERROR] at jnr.ffi.provider.jffi.Provider.<init>(Provider.java:29) [ERROR] at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) [ERROR] at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) [ERROR] at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) [ERROR] at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) [ERROR] at java.base/java.lang.Class.newInstance(Class.java:584) [ERROR] at jnr.ffi.provider.FFIProvider$SystemProviderSingletonHolder.getInstance(FFIProvider.java:68) [ERROR] at jnr.ffi.provider.FFIProvider$SystemProviderSingletonHolder.<clinit>(FFIProvider.java:57) [ERROR] at jnr.ffi.provider.FFIProvider.getSystemProvider(FFIProvider.java:35) [ERROR] at jnr.ffi.LibraryLoader.create(LibraryLoader.java:73) [ERROR] at jnr.unixsocket.Native.<clinit>(Native.java:76) [ERROR] at jnr.unixsocket.UnixSocketChannel.<init>(UnixSocketChannel.java:101) [ERROR] at jnr.unixsocket.UnixSocketChannel.open(UnixSocketChannel.java:60) [ERROR] at io.fabric8.maven.docker.access.util.LocalSocketUtil.canConnectUnixSocket(LocalSocketUtil.java:38) [ERROR] at io.fabric8.maven.docker.access.DockerConnectionDetector$UnixSocketDockerHostProvider.getConnectionParameter(DockerConnectionDetector.java:109) [ERROR] at io.fabric8.maven.docker.access.DockerConnectionDetector.detectConnectionParameter(DockerConnectionDetector.java:78) [ERROR] at io.fabric8.maven.docker.service.DockerAccessFactory.createDockerAccess(DockerAccessFactory.java:34) [ERROR] at io.fabric8.maven.docker.AbstractDockerMojo.execute(AbstractDockerMojo.java:227) [ERROR] at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137) [ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210) [ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156) [ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148) [ERROR] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117) [ERROR] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81) [ERROR] at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56) [ERROR] at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) [ERROR] at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305) [ERROR] at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192) [ERROR] at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105) [ERROR] at org.apache.maven.cli.MavenCli.execute(MavenCli.java:956) [ERROR] at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) [ERROR] at org.apache.maven.cli.MavenCli.main(MavenCli.java:192) [ERROR] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [ERROR] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [ERROR] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [ERROR] at java.base/java.lang.reflect.Method.invoke(Method.java:566) [ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282) [ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225) [ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406) [ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347) [ERROR] -> [Help 1]

Description

Info

  • d-m-p version :0.30.0
  • Maven version (mvn -v) :3.6.1

  • Docker version :2.1.0.1
  • If it’s a bug, how to reproduce : when running mvn clean verify I get this error
  • If it’s a feature request, what is your use case :
  • Sample project : [GitHub Clone URL]

About this issue

  • Original URL
  • State: closed
  • Created 5 years ago
  • Comments: 30 (7 by maintainers)

Commits related to this issue

Most upvoted comments

I’m getting this on Apple M1.

  • A reinstall of jdk11 hasn’t worked for me
  • Neither has setting the docker host

Has anyone else run into this?

This workaround works quite well for now:

brew install socat
socat TCP-LISTEN:2375,reuseaddr,fork UNIX-CONNECT:/var/run/docker.sock &
export DOCKER_HOST=http://127.0.0.1:2375

Then you can OCI images with Maven

bdw, I released v0.39.0 yesterday. Would be awesome if you could try it out and provide some feedback 😃

thank you, v0.39.0 solved this issue for me when running it on the M1 👍

Works well with the 0.38.1 version of the fabric8 plugin and M1. Cheers!

@rohanKanojia : Next weekend is fine, thanks.

I was having the same issue with an older version of everything (maven, java, plugin, and docker)… Adding -Ddocker.host=http://127.0.0.1:2375 resolved my issue. Also setting the DOCKER_HOST environment variable to http://127.0.0.1:2375 fixed it.

still seeing this issue. tried 0.41.0, worked fine with 0.40.3

[ERROR] Failed to execute goal io.fabric8:docker-maven-plugin:0.41.0:start (start) on project cc_generator: Execution start of goal io.fabric8:docker-maven-plugin:0.41.0:start failed: An API incompatibility was encountered while executing io.fabric8:docker-maven-plugin:0.41.0:start: java.lang.UnsatisfiedLinkError: could not load FFI provider jnr.ffi.provider.jffi.Provider

@rohanKanojia : I tested with the latest version of the plugin (0.39.0) and everything works, no problems. Cheers!

You can try a workaround like proxying via socat from a TCP port to a Unix socket like described in https://stackoverflow.com/questions/39411126/access-docker-daemon-remote-api-on-docker-for-mac

However, for the full solution, we need support by jnr-unixsocket, so you might want to monitor and popularize https://github.com/jnr/jnr-unixsocket/issues/95 as well.

  • Try to access the Docker daemon remotely by setting DOCKER_HOST. See the docs for more details.

Setting DOCKER_HOST to http://127.0.0.1:2375 or tcp://127.0.0.1:2375 does not work when you are using Docker Desktop on macOS.

The macOS version of Docker Desktop does not listen on TCP port 2375, so you cannot connect to the Docker engine like this on macOS. See: How do I connect to the remote Docker Engine API? in the Docker documentation, which explains that this is only for the Windows version of Docker Desktop.

On macOS, you are supposed to use the Unix socket, but that does not work either on an Apple Silicon Mac, because that brings you back to square one: it gives you the UnsatisfiedLinkError that this whole issue started with. (Apparently it’s trying to load a dynamic library for which there is no arm64 version available).

It looks like there is currently no way to get fabric8-maven-plugin working on Apple Silicon.

I fixed the issue and it was due to the jdk 11 in my local machine was somehow corrupted. reinstalled jdk11 again after uninstalling and the error went away.