Skip to content

JNA cannot load system library on Mac with OpenJDK 14 #1175

@dmitry-timofeev

Description

@dmitry-timofeev

JNA cannot load a system library on Mac with OpenJDK 14 (but works fine with 11 and 13).

The library is installed via Homebrew, and is accessible from /usr/local/lib:

ls -lah /usr/local/lib/libsodium.dylib 
lrwxr-xr-x  1 user  admin    48B Nov 28 14:30 /usr/local/lib/libsodium.dylib -> ../Cellar/libsodium/1.0.18_1/lib/libsodium.dylib

Logs of JNA load attempts:

On 14 (failing):
???. 06, 2020 5:46:27 PM com.sun.jna.Native extractFromResourcePath
INFO: Looking in classpath from jdk.internal.loader.ClassLoaders$AppClassLoader@55054057 for /com/sun/jna/darwin/libjnidispatch.jnilib
???. 06, 2020 5:46:27 PM com.sun.jna.Native extractFromResourcePath
INFO: Found library resource at jar:file:/Users/user/.m2/repository/net/java/dev/jna/jna/5.5.0/jna-5.5.0.jar!/com/sun/jna/darwin/libjnidispatch.jnilib
???. 06, 2020 5:46:27 PM com.sun.jna.Native extractFromResourcePath
INFO: Extracting library to /Users/user/Library/Caches/JNA/temp/jna3004104893156453390.tmp
???. 06, 2020 5:46:27 PM com.sun.jna.NativeLibrary loadLibrary
INFO: Looking for library 'sodium'
???. 06, 2020 5:46:27 PM com.sun.jna.NativeLibrary loadLibrary
INFO: Adding paths from jna.library.path: null
???. 06, 2020 5:46:27 PM com.sun.jna.NativeLibrary loadLibrary
INFO: Trying libsodium.dylib
???. 06, 2020 5:46:27 PM com.sun.jna.NativeLibrary loadLibrary
INFO: Loading failed with message: dlopen(libsodium.dylib, 9): image not found
???. 06, 2020 5:46:27 PM com.sun.jna.NativeLibrary loadLibrary
INFO: Adding system paths: [/usr/lib, /usr/lib]
???. 06, 2020 5:46:27 PM com.sun.jna.NativeLibrary loadLibrary
INFO: Trying libsodium.dylib
???. 06, 2020 5:46:27 PM com.sun.jna.NativeLibrary loadLibrary
INFO: Loading failed with message: dlopen(libsodium.dylib, 9): image not found
???. 06, 2020 5:46:27 PM com.sun.jna.NativeLibrary loadLibrary
INFO: Looking for matching frameworks
???. 06, 2020 5:46:27 PM com.sun.jna.Native extractFromResourcePath
INFO: Looking in classpath from jdk.internal.loader.ClassLoaders$AppClassLoader@55054057 for sodium
???. 06, 2020 5:46:27 PM com.sun.jna.NativeLibrary loadLibrary
INFO: Loading failed with message: Native library (darwin/libsodium.dylib) not found in resource path (/Users/user/Documents/jna-lib-loading-test/target/test-classes:/Users/user/Documents/jna-lib-loading-test/target/classes:/Users/user/.m2/repository/net/java/dev/jna/jna/5.5.0/jna-5.5.0.jar:/Users/user/.m2/repository/org/junit/jupiter/junit-jupiter/5.6.1/junit-jupiter-5.6.1.jar:/Users/user/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.6.1/junit-jupiter-api-5.6.1.jar:/Users/user/.m2/repository/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar:/Users/user/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/user/.m2/repository/org/junit/platform/junit-platform-commons/1.6.1/junit-platform-commons-1.6.1.jar:/Users/user/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.6.1/junit-jupiter-params-5.6.1.jar:/Users/user/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.6.1/junit-jupiter-engine-5.6.1.jar:/Users/user/.m2/repository/org/junit/platform/junit-platform-engine/1.6.1/junit-platform-engine-1.6.1.jar:)
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.13 s <<< FAILURE! - in org.example.SodiumTest
[ERROR] testInit  Time elapsed: 0.12 s  <<< ERROR!
java.lang.UnsatisfiedLinkError: 
Unable to load library 'sodium':
dlopen(libsodium.dylib, 9): image not found
dlopen(libsodium.dylib, 9): image not found
Native library (darwin/libsodium.dylib) not found in resource path (/Users/user/Documents/jna-lib-loading-test/target/test-classes:/Users/user/Documents/jna-lib-loading-test/target/classes:/Users/user/.m2/repository/net/java/dev/jna/jna/5.5.0/jna-5.5.0.jar:/Users/user/.m2/repository/org/junit/jupiter/junit-jupiter/5.6.1/junit-jupiter-5.6.1.jar:/Users/user/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.6.1/junit-jupiter-api-5.6.1.jar:/Users/user/.m2/repository/org/apiguardian/apiguardian-api/1.1.0/apiguardian-api-1.1.0.jar:/Users/user/.m2/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar:/Users/user/.m2/repository/org/junit/platform/junit-platform-commons/1.6.1/junit-platform-commons-1.6.1.jar:/Users/user/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.6.1/junit-jupiter-params-5.6.1.jar:/Users/user/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.6.1/junit-jupiter-engine-5.6.1.jar:/Users/user/.m2/repository/org/junit/platform/junit-platform-engine/1.6.1/junit-platform-engine-1.6.1.jar:)
        at org.example.SodiumTest.testInit(SodiumTest.java:12)
On 11/13 (passing):
???. 06, 2020 5:39:47 PM com.sun.jna.Native extractFromResourcePath
INFO: Looking in classpath from jdk.internal.loader.ClassLoaders$AppClassLoader@5ffd2b27 for /com/sun/jna/darwin/libjnidispatch.jnilib
???. 06, 2020 5:39:47 PM com.sun.jna.Native extractFromResourcePath
INFO: Found library resource at jar:file:/Users/user/.m2/repository/net/java/dev/jna/jna/5.5.0/jna-5.5.0.jar!/com/sun/jna/darwin/libjnidispatch.jnilib
???. 06, 2020 5:39:47 PM com.sun.jna.Native extractFromResourcePath
INFO: Extracting library to /Users/user/Library/Caches/JNA/temp/jna5613620695150474271.tmp
???. 06, 2020 5:39:47 PM com.sun.jna.NativeLibrary loadLibrary
INFO: Looking for library 'sodium'
???. 06, 2020 5:39:47 PM com.sun.jna.NativeLibrary loadLibrary
INFO: Adding paths from jna.library.path: null
???. 06, 2020 5:39:47 PM com.sun.jna.NativeLibrary loadLibrary
INFO: Trying libsodium.dylib
???. 06, 2020 5:39:47 PM com.sun.jna.NativeLibrary loadLibrary
INFO: Found library 'sodium' at libsodium.dylib

Provide complete information about the problem

  1. Version of JNA and related jars: 5.5.0
  2. Version and vendor of the java virtual machine:
java -version
openjdk version "14" 2020-03-17
OpenJDK Runtime Environment (build 14+36-1461)
OpenJDK 64-Bit Server VM (build 14+36-1461, mixed mode, sharing)
  1. Operating system: macOS
  2. System architecture (CPU type, bitness of the JVM): x64
  3. Steps to reproduce:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions