如何在jar中为库设置绝对路径?

时间:2019-12-07 01:54:52

标签: android jar libsodium

我正在制作一个使用libsodium(加密库)的Java绑定的Java SDK(只是一个jar)。我正在使用的库是libsodium-jna。根据其文档,“ libsodium-jna旨在从路径显式加载钠库。”它必须加载本机C钠库才能工作。如果我将该库用作Intellij中的普通Java程序,这一切都很好。

这是问题所在,如果我将程序导出为jar并尝试使用该库,它将找不到该文件。这是有道理的,因为该程序现在正在android手机中运行,并且无法访问计算机上安装的本机C钠库。

我可以将本地C钠库包装为jar的一部分,并提供路径。但是libsodium-jna明确需要绝对路径。

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.loginfeature, PID: 3646
    java.lang.UnsatisfiedLinkError: Native library (com/sun/jna/android-aarch64/libjnidispatch.so) not found in resource path (.)
        at com.sun.jna.Native.loadNativeDispatchLibraryFromClasspath(Native.java:866)
        at com.sun.jna.Native.loadNativeDispatchLibrary(Native.java:826)
        at com.sun.jna.Native.<clinit>(Native.java:140)
        at com.sun.jna.Native.loadLibrary(Native.java:481)
        at com.muquit.libsodiumjna.SodiumLibrary$SingletonHelper.<clinit>(SodiumLibrary.java:132)
        at com.muquit.libsodiumjna.SodiumLibrary.sodium(SodiumLibrary.java:119)
        at com.muquit.libsodiumjna.SodiumLibrary.libsodiumVersionString(SodiumLibrary.java:408)

0 个答案:

没有答案