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

来源:互联网 发布:windows phone磁贴 编辑:程序博客网 时间:2024/04/18 11:51

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系统。 

原创粉丝点击