java如何从JAR文件的`lib`子目录加载DLL?
我(与Gradle一起)包含了一些带有本机库(DLL)的JAR,它们在DLL文件上方的lib
子目录中打包:
不幸的是
System.loadLibrary('JCudaRuntime-0.9.2-windows-x86_64');
原因
java.lang.UnsatisfiedLinkError: no JCudaRuntime-0.9.2-windows-x86_64 in java.library.path
如何解决这个问题
是否可以为loadLibrary
指定子目录?本地库应该更好地位于哪里?只是在JAR文件的根目录中
我能教Gradle在罐子里寻找本地人吗
# 1 楼答案
libs
普通目录用于jar
和aar
库x86_64
程序集将转到src/main/jniLibs/x86_64
我们还可以改变路径:
问题是
x86_64
特定于平台的子目录仍然是预期的。从.jar
中提取.dll
并将它们放到项目的jniLibs
目录中可能是最简单的-因为它们位于带有lib
目录的jar
中,但可能无法在预期的位置找到;这不必要地使事情复杂化了