使用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文件
输入命令: javah -classpath . -jni com.jni.Util (class路径表示当前位置,类需要带上包的信息) 这样在classes目录下会生成com_jni_Util.h文件
![](http://img.blog.csdn.net/20141107161416767?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHVvd3cx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
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.cpp中无法引用到头文件,需要设置.选中项目---->右击
属性--->C/C++ 附加包含目录中编辑添加 .\include
![](http://img.blog.csdn.net/20141107164125753?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHVvd3cx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
结构如图所示:
![](http://img.blog.csdn.net/20141107163747009?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHVvd3cx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
然后右击项目,选择生成,会在输出目录(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
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
相关文章推荐
- 在VS2010上使用C#调用非托管C++生成的DLL文件
- Java进阶: 使用 Jni 调用 Dll 的实现(使用VS2008 生成Dll)
- vs2010下C++调用DLL以及怎么生成DLL和为什么使用DLL
- Jsp中调用DLL(使用JNI)
- java使用JNI调用C++代码(vs2010生成dll文件)
- java使用JNI调用C++代码(vs2010生成dll文件)
- 【转载整理】eclipse 开发c/c++、Java使用JNI调用C程序、生成64位dll动态链接库
- (转) Jsp中调用DLL(使用JNI)
- 在VS2010上使用C#调用非托管C++生成opencv代码的DLL文件
- Q:目前我计划写一个应用程序调用WinDriver生成的DLL档案,请问若WinDriver三十天试用期结束后,该DLL档案是否可以正常使用?
- Chap5:使用JNI技术实现java程序调用第三方dll(c/c++)文件的功能
- java调用dll(JNI的使用)
- VS2010使用DEF文件来生成DLL与Lib
- 使用 JNI 调用 c 的 DLL
- Eclipse中使用JNI调用C++ build的dll
- 在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)
- 在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)
- 在VS2010上使用C#调用非托管C++生成的DLL文件(图文讲解)
- 使用jsp生成验证码使用简单在java或jsp页面调用简单
- Java使用JNI调用VC的DLL的一个小例子