您的位置:首页 > 编程语言 > C语言/C++

JAVA通过JNI调用本地C语言方法

2007-08-10 14:33 585 查看
JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的各接口方法。很多文章都讲述了在window系统上如何实现本地调用。我就不在这里赘述。现将我在Unix实现本地方法调用时遇到的错误以及如何解决贴出来,以供查阅。

1.假设.so库文件已经生成。然后运行测试方法,若出现下列类似错误:

java singtel.bigfoot.webservice.test.TestJni
Test EnvCls.....
Exception in thread "main" java.lang.UnsatisfiedLinkError: /koala_app/bs/dvvoip/appl/bin/batch/libenvImpl.so: specified handle or index is not valid.
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1585)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1485)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:834)
at singtel.bigfoot.softact.jni.EnvCls.<clinit>(EnvCls.java:62)
at singtel.bigfoot.webservice.test.TestJni.main(TestJni.java:23)

首先检查这个库文件是否存在,若存在就要检查你的运行命令,确认必须要以Java -D64 XXXX 这种方式去运行,这有别于Window系统。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: