繁体   English   中英

在资源路径中找不到 JNA 原生支持 (/com/sun/jna/linux-arm/libjnidispatch.so)

[英]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。

我执行以下操作:

  1. 须藤 apt-get 安装 libjna-java
  2. 获取已安装的 jar /usr/share/java/jna.jar
  3. 安装 jna.jar 作为 maven 依赖

他们为我工作...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM