Я включил (с Gradle) несколько JAR с собственными библиотеками (DLL), которые упакованы в подкаталог lib над файлами DLL:
К несчастью,
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 искать аборигенов под lib внутри JAR?




каталог libs обычный предназначен для библиотек jar и aar.
Сборка x86_64 пошла бы на src/main/jniLibs/x86_64
static {
try {
System.loadLibrary("JCudaDriver-0.9.2-windows-x86_64");
System.loadLibrary("JCudaRuntime-0.9.2-windows-x86_64");
} catch (UnsatisfiedLinkError e) {
Log.e(LOG_TAG, e.getMessage());
}
}
можно / можно также изменить путь:
sourceSets {
main {
jniLibs.srcDir "src/main/jniLibs"
jni.srcDirs = "src/main/cpp"
}
}
проблема в том, что подкаталог для конкретной платформы x86_64 все еще ожидается. извлечение .dll из .jar и размещение их в каталоге проекта jniLibs может быть самым простым - потому что, пока они находятся внутри jar с каталогом lib, они могут быть не найдены там, где ожидалось; что излишне усложняет ситуацию.