Java JNI 调用的完全手册.doc
文本预览下载声明
JNI调用的注意事项 2
JNI系统一些细节点总结 3
Java和C之间互相传递字符串 7
Java和C互操作的异常问题处理 9
Java与C\C++之间通过JNI传递中文字符串 9
Java: JNI完全手册 17
JNI使用技巧点滴(二) 23
JNI部分 24
Tomcat+jsp+javaBean的例子 26
JNI调用固有方法 30
Java基础知识——JNI入门介绍(下) 32
Java调用本地方法(JNI浅谈) 38
使用JNI的步骤 44
JAVA与C++::关于JNI中文字符串操作问题总结 47
Windows 平台上实现 Java 本地方法实用的示例、步骤和准则 51
例解 VC++ 6.0 实现 JNI 58
JNI中文处理问题小结 63
jni的中文字符串处理 72
JNI中jstring类型与c语言中的字符串的转换 74
jstring和char*之间的转换方法 76
用Delphi开发JNI(Java Native Interface)应用(一) 77
java通过JNI与delphi交互 80
使用JNI技术实现JAVA程序调用dll 83
HP-UX下使用JNI访问标准C++程序 89
JNI调用的注意事项
JNI的简单教程网上很多,看看就能够明白,照着操作也基本能够做下来。但是因为大多的教程写的都不够详细,在照着操作时候可能会遇到几个小问题,故开篇时在这里简单总结一下。
在C语言环境中编译代码,出现编译错误,类型为找不到jni.h文件。
解决方法:在jdk中寻找到jni.h和jni_md.h文件,将这两个文件拷贝到C语言编译器的include目录中。具体的目录可能会跟编译器有关。比如Dev C++中,将其直接拷贝到include目录下即可。
在C语言环境中编译代码,出现编译错误,类型为参数错误。
解决方法:不能简单的把生成的.h文件中的方法名直接拷贝到.c文件中去,需要加入具体的参数。例如JNIEXPORT void JNICALL Java_testdll (JNIEnv *, jclass, jint)应该更改为JNIEXPORT void JNICALL Java_testdll (JNIEnv * para1, jclass, jint para2)。
在Java中调用JNI时候,java.lang.UnsatisfiedLinkError错误发生。
解决方法:生成的dll文件放错了位置,所以不能加载dll文件。试试将dll文件放在与class文件同一目录,再试试放在package的根目录。
1、建的dll工程里一定要是.c文件。
2、一定要是release编译的dll文件,不要用debug生成的。
3、javah 时使用完整包名.类名 (重要!!!)
编译举例:
调用JNI的Java源文件FpMatch.java 。
编译说明:
javac -d ./ FpMatch.java
-d ./ 参数会在当前目录下,依次建立package指定的目录,并把FpMatch.class放在package指定路径下,为下一步的javah做准备。
javah -d ./ com.until.tc.FpMatch
增加-d参数才可以生成正确的.h文件。这样JNI调用函数名里才包括了package的路径。
JNI系统一些细节点总结
一.系统环境 2
二.JNI的简要使用例子 2
三.JNI调用中考虑的问题 3
四.JNI中对JAVA传入数据的处理 5
五.JAVA调用本地接口后的数据处理问题 5
六.JAVA中的一些小东西 5
一.系统环境
linux操作系统kernel2.4.2,安装j2sdk1.4.0
二.JNI的简要使用例子
下面是一个简单的例子实现打印一句话的功能,但是用的c的printf最终实现。一般提供给java的jni接口包括一个so文件(封装了c函数的实现)和一个java文件(需要调用path的类)。
1. JNI的目的是使java方法中能够调用c实现的一些函数,比如以下的java类,就需要调用一个本地函数testjni(一般声明为private native类型),首先需要创建文件weiqiong.java,内容如下:
class weiqiong
{
static
{
System.loadLibrary(testjni);//载入静态库,test函数在其中实现
}
private native void testjni(); //声明本地调用
public void test()
{
testjni();
}
public static void main(String args[])
{
weiqiong haha = new w
显示全部