使用JNI,vs2010 生成dll, JSP中调用dll

JNI是Java Native Interface的缩写,中文为JAVA本地调用。从Java1.1开始,Java Native Interface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。

主要运行过程:创建Java文件---->使用 javah 编译生成相应的头文件供vs2010 中使用--->使用vs2010 编译生成dll文件

我的运行环境:

a、Myeclipse 10  中创建了Web项目TestDll    路径: D:\Program Files\MyEclipse10\MyEclipse 10\DLLworkspace\TestDll

b、VS2010  中创建了项目Util,路径: C:\Users\Admin\Documents\Visual Studio 2010\Projects\DLLTest\Util

c、tomcat目录:D:\apache-tomcat-6.0.29

d:jdk环境:C:\Program Files (x86)\Java\jdk1.7.0_45

1、开始 编写java文件

package com.jni;


public class Util {
	public native static int add(int x,int y);
	static {
		   System.loadLibrary( "Util" );//是需要加载的dll文件名称,在vs2010创建项目时名称需要定义为Util
	}
}
   2、生成对应的头文件:打开一个dos窗口,进入到存放class文件的目录:

输入命令: javah -classpath . -jni com.jni.Util   (class路径表示当前位置,类需要带上包的信息)  这样在classes目录下会生成com_jni_Util.h文件


3、vs2010 中生成dll文件

创建项目; Win32 控制台应用程序--->输入名称Util--->应用程序类型为Dll,附加选项中选中空项目然后点击完成。

从jdk目录下找到文件jni.h(在include文件中)和jni_md.h(在include/win32目录下)文件

在项目Util中创建文件夹include ,然后将文件 jni.h,           jni_md.h      和 com_jni_Util.h文件拷贝到该文件夹下

创建C++文件Util.cpp

//Util.c
#include "com_jni_Util.h"
#include "jni.h"

JNIEXPORT jint JNICALL Java_com_jni_Util_add
(JNIEnv *env, jclass jc, jint x, jint y)
{
    return x+y;
}

若Util.cpp中无法引用到头文件,需要设置.选中项目---->右击  属性--->C/C++  附加包含目录中编辑添加  .\include



结构如图所示:


然后右击项目,选择生成,会在输出目录(C:\Users\Admin\Documents\Visual Studio 2010\Projects\DLLTest\Debug)下生成Util.dll等文件

4、编写jsp文件   index.jsp

<%@ page import="com.jni.Util" %>

<html> <head></head>

<body> <h3>5+7=<%=Util.add( 5, 7 )%></h3> </body> </html>

5、把Util.dll文件复制到D:\apache-tomcat-6.0.29\bin目录下

6、部署Web项目

7、在ie中输入

http://localhost:8080/TestDll/index.jsp,若界面上能看到5+7=12就表示成功了

参考文章:http://blog.csdn.net/bintime/article/details/2586505



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。