您的位置:首页 > Web前端 > JavaScript

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

2014-11-07 16:51 1201 查看
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
项目源代码下载:http://download.csdn.net/detail/luoww1/8224705
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: