我正在使用 JNA 的com.sun.jna.NativeLibrary
类来加载VLCJ
本机库。我正在研究armv8(aarch x64)-based linux device
。以下是我的代码,请注意我正在使用最新的JNA版本 jna-4.5.2
:
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), Constants.DEPLIB_OUTPUT_DIRECTORY);
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
LibXUtil.initialise();
首先我遇到此错误:
java.lang.UnsatisfiedLinkError: JNA native support (com/sun/jna/linux-aarch64/libjnidispatch.so) not found in resource path
快速搜索后,我发现必须将jar内的jna本机lib目录复制到jvm lib路径中,其中jna jar库已针对几乎所有已知系统预构建了库,如下图所示:
jna-4.5.2 internal content.jpeg
这样做之后,上述异常消失了,但又出现了另一个异常:
java.lang.UnsatisfiedLinkError: Can't obtain static method fromNative(Method, Object) from class com.sun.jna.Native
例外是说它在类 com.sun.jna.Native 中找不到方法 fromNative(Method,Object),但是在反编译此类后我发现该方法已经存在。
我没主意,谢谢,谢谢!。
答案 0 :(得分:0)
解决方式:
快速搜索后,我发现必须复制
jna
本机库 从jar内的目录进入jvm
lib路径...
jna
个模块(jar)jna.jar
jna-platform.jar
linux-aarch64.jar