【文件属性】:
文件名称:故障排除故障排除故障排除故障排除-《捷联惯导系统原理》陈哲
文件大小:692KB
文件格式:PDF
更新时间:2021-06-07 23:52:16
JNI
5.2 故障排除故障排除故障排除故障排除
当使用 JNI 从 Java 程序访问本机代码时,您会遇到许多问题。您会遇到的三个
最常见的错误是:
•无法找到动态链接。它所产生的错误消息 是:java.lang.UnsatisfiedLinkError。这
通常指无法找到共享库,或者无法找到共享库内特定的本机方法。
•无 法找到共享库文件。当用 System.loadLibrary(String libname) 方法(参数是
文件名)装入库文件时,请确保文件名拼写正确以及没有指定扩展名。还有,确
保库文件的位置在类路径中,从而确保 JVM 可以访问该库文件。
•无法找到具有指定说明的方法。确保您的 C/C++ 函数实现拥有与头文件中的函
数说明相同的说明。
从 Java 调用 C 或 C++ 本机代码(虽然不简单)是 Java 平台中一种良好集成
的功能。虽然 JNI 支持 C 和 C++,但 C++ 接口更清晰一些并且通常比 C 接口
更可取。
正如您已经看到的,调用 C 或 C++ 本机代码需要赋予函数特殊的名称,并创建
共享库文件。当利用现有代码库时,更改代码通常是不可取的。要避免这一点,
在 C++ 中,通常创建代理代码或代理类,它们有专门的 JNI 所需的命名函数。
然后,这些函数可以调用底层库函数,这些库函数的说明和实现保持不变。
5.2 使用 JNI 技术实现 java 程序调用第三方 dll(c/c++)文件的功能
JAVA 的跨平台的特性 深受 java 程序员们的喜爱,但正是由于它为了实现跨平台
的目的,使得它和本地机器的各种内部联系变得很少,大大约束 了它的功能,比如
与一些硬件设备通信,往往要花费很 大的精力去设计流程编写代码去管理设备
端口,而且有一些设备厂商提供的硬件接口已经经过一定的封装和处理,不能直接