[英]com/sun/jna/android-arm/libjnidispatch.so not found in resource path
[英]JNA native support (/com/sun/jna/linux-arm/libjnidispatch.so) not found in resource path
我已经开始构建一个 Java 服务,它结合了 JNA 来加载本机 C/C++ 库,我想在 Raspberry PI aka arm 平台上运行 Java 服务。 我已经成功地建立了一个稳定的服务基础,它可以在 Windows7 和 linux-amd64/debian 上运行,但是在 RPI 平台上我得到了上述错误:线程“main”中的异常 java.lang.UnsatisfiedLinkError: JNA native在资源路径中找不到支持 (/com/sun/jna/linux-arm/libjnidispatch.so)
在 RPI 上,我完成了以下操作: * 安装了 openjdk7 和 java8 beta 并支持 arm 硬浮动。 * 安装了 libjna-java 库。
设置如下:
爪哇
root@pisces:/opt/TellstickReplay# java -version
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b36e)
Java HotSpot(TM) Client VM (build 25.0-b04, mixed mode)
root@pisces:/opt/TellstickReplay#
LD_LIBRARY_PATH
root@pisces:/opt/TellstickReplay# echo $LD_LIBRARY_PATH
/opt/lib/jna
类路径
root@pisces:/opt/TellstickReplay# echo $CLASSPATH
/usr/lib/jna
这些设置似乎都不能满足具有 JNA 支持的 JAVA。 我什至尝试将 jna.jar 和 linux-arm.jar 都导出到 Eclipse 中的项目中,然后一起将 jar 重新构建到导出的 jar 中,但仍然出现相同的错误。 导出的 jar 已在 windows 和 linux 上成功测试,因此 jar 文件正在运行。
我也尝试在 jar 文件的 Manifest 中使用 CLASSPATH 但没有成功。 我还尝试从绝对路径显式加载 libjnidispatch.so,但 JAVA 开始抱怨它找不到 libjnidispatch.so 的文件,即使路径是 100% 正确的。
那么.. 有谁知道如何在 Raspberry PI 平台上正确获得 JNA 支持? 拜托,我感到非常沮丧,很快就放弃了解决这个问题的希望。
您系统上的 libjnidispatch.so 在哪里? 如果它不在您的系统上,JNA 将尝试从指定资源路径的 jna.jar 中解压它。 如果它也不存在,您将收到UnsatisfiedLinkError
。
建议您尽可能在系统上显式安装 libjnidispatch.so; jna.jar 捆绑主要是为了方便在更常见的桌面平台上使用。
linux-arm.jar
包含linux-arm.jar
的最新版本,但只有 WebStart 知道如何从这样的 jar 中自动加载本机。 如果将其解压到 /opt/lib/jna(或 LD_LIBRARY_PATH 上的其他位置),则应避免链接错误。
我正在为 RPI2 重新编译Apache Spark ,我花了几天时间来解决这个问题。 然后我找到了最简单的解决方案。 您所需要的只是默认 JVM 的本机库路径中的 libjnidispatch.so 链接。
sudo -s ln -s /usr/lib/arm-linux-gnueabihf/jni/libjnidispatch.so /usr/lib/jvm/default-java/jre/lib/arm/libjnidispatch.so
我打包了新的 jna.jar (4.0),它包含了 linux-arm/libjnidispatch.so。 我试图运行的代码现在可以工作了。
我想说的更多是您使用的操作系统或特定 JRE 系统内部文件夹/包/JNDI 结构中“libjnidispatch.so”位置的“配置故障”,它可能不是布局相同的 Debian 或爪哇JRE。
我执行以下操作:
他们为我工作...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.