错误信息
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'liblicense':
dlopen(libliblicense.dylib, 0x0009): tried: 'libliblicense.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlibliblicense.dylib' (no such file), '/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/bin/./libliblicense.dylib' (no such file), '/usr/lib/libliblicense.dylib' (no such file, not in dyld cache), 'libliblicense.dylib' (no such file), '/usr/lib/libliblicense.dylib' (no such file, not in dyld cache)
dlopen(libliblicense.dylib, 0x0009): tried: 'libliblicense.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlibliblicense.dylib' (no such file), '/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/bin/./libliblicense.dylib' (no such file), '/usr/lib/libliblicense.dylib' (no such file, not in dyld cache), 'libliblicense.dylib' (no such file), '/usr/lib/libliblicense.dylib' (no such file, not in dyld cache)
dlopen(/Users/mi/Library/Frameworks/liblicense.framework/liblicense, 0x0009): tried: '/Users/mi/Library/Frameworks/liblicense.framework/liblicense' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/mi/Library/Frameworks/liblicense.framework/liblicense' (no such file), '/Users/mi/Library/Frameworks/liblicense.framework/liblicense' (no such file), '/System/Library/Frameworks/liblicense.framework/liblicense' (no such file, not in dyld cache)
dlopen(/Library/Frameworks/liblicense.framework/liblicense, 0x0009): tried: '/Library/Frameworks/liblicense.framework/liblicense' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Library/Frameworks/liblicense.framework/liblicense' (no such file), '/Library/Frameworks/liblicense.framework/liblicense' (no such file), '/System/Library/Frameworks/liblicense.framework/liblicense' (no such file, not in dyld cache)
dlopen(/System/Library/Frameworks/liblicense.framework/liblicense, 0x0009): tried: '/System/Library/Frameworks/liblicense.framework/liblicense' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/System/Library/Frameworks/liblicense.framework/liblicense' (no such file), '/System/Library/Frameworks/liblicense.framework/liblicense' (no such file, not in dyld cache)
Native library (darwin-aarch64/libliblicense.dylib) not found in resource path ([file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/charsets.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/crs-agent.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/cldrdata.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/dnsns.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/jaccess.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/jfxrt.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/legacy8ujsse.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/localedata.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/nashorn.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/openjsse.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/sunec.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/zipfs.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/jce.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/jfr.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/jsse.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/management-agent.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/resources.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/rt.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/lib/dt.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/lib/jconsole.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/lib/tools.jar, file:/Users/mx/IdeaProjects/src/test-parent/testSecurity/target/test-classes/, file:/Users/mx/IdeaProjects/src/test-parent/testSecurity/target/classes/, file:/Users/mi/development/maven/repository/org/bouncycastle/bcprov-jdk15to18/1.69/bcprov-jdk15to18-1.69.jar, file:/Users/mi/development/maven/repository/org/apache/commons/commons-lang3/3.4/commons-lang3-3.4.jar, file:/Users/mi/development/maven/repository/com/alibaba/fastjson/1.2.83/fastjson-1.2.83.jar, file:/Users/mi/development/maven/repository/net/java/dev/jna/jna/5.13.0/jna-5.13.0.jar, file:/Users/mi/development/maven/repository/net/java/dev/jna/jna-platform/5.13.0/jna-platform-5.13.0.jar, file:/Users/mi/development/maven/repository/cn/hutool/hutool-all/5.8.16/hutool-all-5.8.16.jar, file:/Users/mi/development/maven/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar, file:/Users/mi/development/maven/repository/com/googlecode/aviator/aviator/5.1.4/aviator-5.1.4.jar, file:/Users/mi/development/maven/repository/commons-beanutils/commons-beanutils/1.8.0/commons-beanutils-1.8.0.jar, file:/Users/mi/development/maven/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar, file:/Users/mi/development/maven/repository/org/projectlombok/lombok/1.18.24/lombok-1.18.24.jar, file:/Users/mi/development/maven/repository/org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.jar, file:/Users/mi/development/maven/repository/org/hibernate/validator/hibernate-validator/6.2.2.Final/hibernate-validator-6.2.2.Final.jar, file:/Users/mi/development/maven/repository/jakarta/validation/jakarta.validation-api/2.0.2/jakarta.validation-api-2.0.2.jar, file:/Users/mi/development/maven/repository/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final.jar, file:/Users/mi/development/maven/repository/com/fasterxml/classmate/1.4.0/classmate-1.4.0.jar, file:/Users/mi/development/maven/repository/org/apache/logging/log4j/log4j-api/2.17.1/log4j-api-2.17.1.jar, file:/Users/mi/development/maven/repository/org/slf4j/log4j-over-slf4j/1.7.25/log4j-over-slf4j-1.7.25.jar, file:/Users/mi/development/maven/repository/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25.jar, file:/Users/mi/development/maven/repository/org/apache/logging/log4j/log4j-to-slf4j/2.17.1/log4j-to-slf4j-2.17.1.jar, file:/Users/mi/development/maven/repository/org/junit/jupiter/junit-jupiter-engine/5.9.0/junit-jupiter-engine-5.9.0.jar, file:/Users/mi/development/maven/repository/org/junit/platform/junit-platform-engine/1.9.0/junit-platform-engine-1.9.0.jar, file:/Users/mi/development/maven/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar, file:/Users/mi/development/maven/repository/org/junit/platform/junit-platform-commons/1.9.0/junit-platform-commons-1.9.0.jar, file:/Users/mi/development/maven/repository/org/junit/jupiter/junit-jupiter-api/5.9.0/junit-jupiter-api-5.9.0.jar, file:/Users/mi/development/maven/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar, file:/Users/mi/development/maven/repository/org/junit/jupiter/junit-jupiter-params/5.9.0/junit-jupiter-params-5.9.0.jar, file:/Users/mi/Applications/IntelliJ%20IDEA%20Ultimate.app/Contents/lib/idea_rt.jar])
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:323)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:483)
at com.sun.jna.Library$Handler.<init>(Library.java:197)
at com.sun.jna.Native.load(Native.java:622)
at com.sun.jna.Native.load(Native.java:596)
at com.test.license.LicenseLibrary.<clinit>(LicenseLibrary.java:45)
at com.test.license.LicenseValidator.getMachineID(LicenseValidator.java:11)
at com.test.dcpdatasecurity.service.test.EncryptionAlgorithmsServiceTest.main(EncryptionAlgorithmsServiceTest.java:33)
Suppressed: java.lang.UnsatisfiedLinkError: dlopen(libliblicense.dylib, 0x0009): tried: 'libliblicense.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlibliblicense.dylib' (no such file), '/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/bin/./libliblicense.dylib' (no such file), '/usr/lib/libliblicense.dylib' (no such file, not in dyld cache), 'libliblicense.dylib' (no such file), '/usr/lib/libliblicense.dylib' (no such file, not in dyld cache)
at com.sun.jna.Native.open(Native Method)
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:211)
... 7 more
Suppressed: java.lang.UnsatisfiedLinkError: dlopen(libliblicense.dylib, 0x0009): tried: 'libliblicense.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlibliblicense.dylib' (no such file), '/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/bin/./libliblicense.dylib' (no such file), '/usr/lib/libliblicense.dylib' (no such file, not in dyld cache), 'libliblicense.dylib' (no such file), '/usr/lib/libliblicense.dylib' (no such file, not in dyld cache)
at com.sun.jna.Native.open(Native Method)
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:224)
... 7 more
Suppressed: java.lang.UnsatisfiedLinkError: dlopen(/Users/mi/Library/Frameworks/liblicense.framework/liblicense, 0x0009): tried: '/Users/mi/Library/Frameworks/liblicense.framework/liblicense' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Users/mi/Library/Frameworks/liblicense.framework/liblicense' (no such file), '/Users/mi/Library/Frameworks/liblicense.framework/liblicense' (no such file), '/System/Library/Frameworks/liblicense.framework/liblicense' (no such file, not in dyld cache)
at com.sun.jna.Native.open(Native Method)
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:268)
... 7 more
Suppressed: java.lang.UnsatisfiedLinkError: dlopen(/Library/Frameworks/liblicense.framework/liblicense, 0x0009): tried: '/Library/Frameworks/liblicense.framework/liblicense' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/Library/Frameworks/liblicense.framework/liblicense' (no such file), '/Library/Frameworks/liblicense.framework/liblicense' (no such file), '/System/Library/Frameworks/liblicense.framework/liblicense' (no such file, not in dyld cache)
at com.sun.jna.Native.open(Native Method)
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:268)
... 7 more
Suppressed: java.lang.UnsatisfiedLinkError: dlopen(/System/Library/Frameworks/liblicense.framework/liblicense, 0x0009): tried: '/System/Library/Frameworks/liblicense.framework/liblicense' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/System/Library/Frameworks/liblicense.framework/liblicense' (no such file), '/System/Library/Frameworks/liblicense.framework/liblicense' (no such file, not in dyld cache)
at com.sun.jna.Native.open(Native Method)
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:268)
... 7 more
Suppressed: java.io.IOException: Native library (darwin-aarch64/libliblicense.dylib) not found in resource path ([file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/charsets.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/crs-agent.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/cldrdata.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/dnsns.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/jaccess.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/jfxrt.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/legacy8ujsse.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/localedata.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/nashorn.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/openjsse.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/sunec.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/ext/zipfs.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/jce.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/jfr.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/jsse.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/management-agent.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/resources.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/jre/lib/rt.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/lib/dt.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/lib/jconsole.jar, file:/Library/Java/JavaVirtualMachines/zulu-8.jdk/Contents/Home/lib/tools.jar, file:/Users/mx/IdeaProjects/src/test-parent/testSecurity/target/test-classes/, file:/Users/mx/IdeaProjects/src/test-parent/testSecurity/target/classes/, file:/Users/mi/development/maven/repository/org/bouncycastle/bcprov-jdk15to18/1.69/bcprov-jdk15to18-1.69.jar, file:/Users/mi/development/maven/repository/org/apache/commons/commons-lang3/3.4/commons-lang3-3.4.jar, file:/Users/mi/development/maven/repository/com/alibaba/fastjson/1.2.83/fastjson-1.2.83.jar, file:/Users/mi/development/maven/repository/net/java/dev/jna/jna/5.13.0/jna-5.13.0.jar, file:/Users/mi/development/maven/repository/net/java/dev/jna/jna-platform/5.13.0/jna-platform-5.13.0.jar, file:/Users/mi/development/maven/repository/cn/hutool/hutool-all/5.8.16/hutool-all-5.8.16.jar, file:/Users/mi/development/maven/repository/commons-codec/commons-codec/1.11/commons-codec-1.11.jar, file:/Users/mi/development/maven/repository/com/googlecode/aviator/aviator/5.1.4/aviator-5.1.4.jar, file:/Users/mi/development/maven/repository/commons-beanutils/commons-beanutils/1.8.0/commons-beanutils-1.8.0.jar, file:/Users/mi/development/maven/repository/commons-logging/commons-logging/1.1.1/commons-logging-1.1.1.jar, file:/Users/mi/development/maven/repository/org/projectlombok/lombok/1.18.24/lombok-1.18.24.jar, file:/Users/mi/development/maven/repository/org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.jar, file:/Users/mi/development/maven/repository/org/hibernate/validator/hibernate-validator/6.2.2.Final/hibernate-validator-6.2.2.Final.jar, file:/Users/mi/development/maven/repository/jakarta/validation/jakarta.validation-api/2.0.2/jakarta.validation-api-2.0.2.jar, file:/Users/mi/development/maven/repository/org/jboss/logging/jboss-logging/3.3.2.Final/jboss-logging-3.3.2.Final.jar, file:/Users/mi/development/maven/repository/com/fasterxml/classmate/1.4.0/classmate-1.4.0.jar, file:/Users/mi/development/maven/repository/org/apache/logging/log4j/log4j-api/2.17.1/log4j-api-2.17.1.jar, file:/Users/mi/development/maven/repository/org/slf4j/log4j-over-slf4j/1.7.25/log4j-over-slf4j-1.7.25.jar, file:/Users/mi/development/maven/repository/org/slf4j/jcl-over-slf4j/1.7.25/jcl-over-slf4j-1.7.25.jar, file:/Users/mi/development/maven/repository/org/apache/logging/log4j/log4j-to-slf4j/2.17.1/log4j-to-slf4j-2.17.1.jar, file:/Users/mi/development/maven/repository/org/junit/jupiter/junit-jupiter-engine/5.9.0/junit-jupiter-engine-5.9.0.jar, file:/Users/mi/development/maven/repository/org/junit/platform/junit-platform-engine/1.9.0/junit-platform-engine-1.9.0.jar, file:/Users/mi/development/maven/repository/org/opentest4j/opentest4j/1.2.0/opentest4j-1.2.0.jar, file:/Users/mi/development/maven/repository/org/junit/platform/junit-platform-commons/1.9.0/junit-platform-commons-1.9.0.jar, file:/Users/mi/development/maven/repository/org/junit/jupiter/junit-jupiter-api/5.9.0/junit-jupiter-api-5.9.0.jar, file:/Users/mi/development/maven/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar, file:/Users/mi/development/maven/repository/org/junit/jupiter/junit-jupiter-params/5.9.0/junit-jupiter-params-5.9.0.jar, file:/Users/mi/Applications/IntelliJ%20IDEA%20Ultimate.app/Contents/lib/idea_rt.jar])
at com.sun.jna.Native.extractFromResourcePath(Native.java:1145)
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:295)
... 7 more
原因
这个错误表明你的 Java 程序在运行时无法找到所需的本地库 liblicense.dylib
- 本地库未正确加载 - JNA 试图从 classpath 中寻找名为 darwin-aarch64/libliblicense.dylib 的原生库文件,但没有找到。
Native library (darwin-aarch64/libliblicense.dylib) not found in resource path
- 找不到对应文件
JNA 在加载本地库时,会自动加上(或去掉)系统平台默认的库前缀和后缀,我原本写的是 liblicense.dylib, 但是自动加上了 lib 前缀
解决方案
文件放对应目录
将 liblicense.dylib 库放到 resources 下的 darwin-aarch64 目录下
加载文件名需要去掉 lib 前缀
前缀lib 由操作系统自动加上
其它
✅ 🔥 代码举例
最常用的写法(推荐跨平台):
LicenseLib lib = Native.load("license", LicenseLib.class);
✅ 自动找:
liblicense.dylib (macOS)
liblicense.so (Linux)
license.dll (Windows)