付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/
javaJNI开发
Jni程序开发的一般操作步骤如下:l
编写java中的调用类l
用javah生成c/c++原生函数的头文件l
c/c++中调用需要的其他函数功能,实现原生函数(原则上可以调用任何资源)l
将项目依赖的所有原生库和资源加入到java项目的java.library.path个人收集整理勿做商业用途l
生成java程序l
发布java应用和dll库Jni程序开发示例:步骤一:在HelloJNI工程里编写带有native声明的方法的java类packagehxzon.jni;publicclassTestJNI{static{
System.loadLibrary("hellodll");
}
publicnativevoiddispHelloWorld();
publicstaticvoidmain(String[]args){
newTestJNI().dispHelloWorld();个人收集整理勿做商业用途}}
编译产生hxzon/jni/TestJNI.class步骤二:控制台进入类文件(TestJNI.java)的所在的目录,例如xxx/src/hxzon/jni/。运行javah-classpath../../-jnihxzon.jni.TestJNI,类根目录产生hxzon_jni_TestJNI.h头文件。个人收集整理勿做商业用途注意类要包含包名,路径文件夹下要包含所有包中的类,否则会报找不到类的错误。classpath参数指定到包名前一级文件夹(hxzon的上一级)。个人收集整理勿做商业用途Tips:在使用javah生成头文件时,要注意类所在的路径,即包。如hello.java的package
:com.mypackage,该类所在的目录为:
|--java
|--com
|--mypackage
|--hello.java
那在dos中使用时要做按照如下的路径使用javah:
f:\java>javah
com.mypackage.hello
注意:要将包名com.mypackage加上个人收集整理勿做商业用途参考网址:/blog/static/1421431201082951815341/个人收集整理勿做商业用途hxzon_jni_TestJNI.h/*DONOTEDITTHISFILE-itismachinegenerated*/
#include<jni.h>
/*Headerforclasshxzon_jni_TestJNI*/个人收集整理勿做商业用途#ifndef_Included_hxzon_jni_TestJNI
#define_Included_hxzon_jni_TestJNI
#ifdef__cplusplus
extern"C"{
#endif
/*
*Class:
hxzon_jni_TestJNI
*Method:
dispHelloWorld
*Signature:()V
*/
JNIEXPORTvoidJNICALLJava_hxzon_jni_TestJNI_dispHelloWorld
(JNIEnv*,jobject);个人收集整理勿做商业用途#ifdef__cplusplus
}
#endif
#endif
步骤三:3.编写.c文件。注意方法名与头文件里的一样,否则通过编译,运行时出错。/**hxzon_jni_TestJNI.cpp
**Createdon:2009-8-25
*
Author:hxzon
*/#include<jni.h>#include"hxzon_jni_TestJNI.h"#include<stdio.h>JNIEXPORTvoidJNICALLJava_hxzon_jni_TestJNI_dispHelloWorld
(JNIEnv*env,jobjectobj)个人收集整理勿做商业用途{
printf("Helloworld!");
return;}步骤四:安装VC6,VC命令行下有一个编译器,名叫cl.exe(搭建cl编译器环境,来编译dll动态库)搭建cl编译器环境,重点在于cl编译器的环境变量配置配置!安装过程中勾选注册环境变量安装完成后在cmd命令窗口,随意的路径输入:cl/?会显示许多的帮助信息,则表示配置成功如果其他显示,配置失败,注意去环境变量里检查如下配置是否存在,不存在,自己添加上(一般来说安装过程中会自动配置好,自己配置的肯能会乱,所以大家注意让安装过程一切正常!本人是安装过程自动配置的)
include=D:\develop\MicrosoftVisualStudio\VC98\atl\include;D:\develop\MicrosoftVisualStudio\VC98\mfc\include;D:\develop\MicrosoftVisualStudio\VC98\include
lib=D:\develop\MicrosoftVisualStudio\VC98\mfc\lib;D:\develop\MicrosoftVisualStudio\VC98\lib
MSDevDir=D:\develop\MicrosoftVisualStudio\Common\MSDev98
path=D:\develop\MicrosoftVisualStudio\Common\Tools\WinNT;D:\develop\MicrosoftVisualStudio\Common\MSDev98\Bin;D:\develop\MicrosoftVisualStudio\Common\Tools;D:\develop\MicrosoftVisualStudio\VC98\bin
个人收集整理勿做商业用途步骤五:5.控制台进入类文件(TestJNI.java)的所在的目录,例如xxx/src/hxzon/jni/,注意,此时目录里至少需要包含个人收集整理勿做商业用途hxzon_jni_TestJNI.h"hxzon_jni_TestJNI.c两个文件,就是使用这两个文件生成c的动态库个人收集整理勿做商业用途cdxxx/src/hxzon/jni/cl–I”%java_home%\include”-I”%java_home%\include\win32”-LDhxzon_jni_TestJNI.c-Fehello.dll个人收集整理勿做商业用途或者cl-I"C:\ProgramFiles\Java\jdk1.6.0_14\include"-I"C:\ProgramFiles\Java\jdk1.6.0_14\include\win32"-LDhxzon_jni_TestJNI.c-Fehello.dll。
注意头文件路径用引号括起来,否则当路径有空格时出错。
以上命令的参数中,-I表示编译包含的额外目录,-LD表示产生dll,-Fe后面表示产生dll的名字,具体的参数可以自己用cl-help命令查看。
成功编译,会产生hello.dll,hello.lib,hello.exp三个文件,将hellodll.dll拷贝到工程的src的根目录下。(HelloJNI工程)不管我们拷贝到哪里,都要在环境变量的path里添加该hello.dll所在的目录。此处我们把hello.dlll拷贝到工程的src的根目录下。个人收集整理勿做商业用途参考资料:接下来是设置JVM的搜索路径,使其能够找到你的dll。JVM的搜索路径由java.library.path系统属性决定,其默认值为系统环境变量中的PATH内容。因此,可以通过修改PATH变量来达到设置java.library.path属性的目的(改变之后Eclipse需要重新启动),一般的方法是在PATH中加入dll所在文件夹的绝对路径。另一种方法是在Java命令的参数中加入“-Djava.library.path=dll所在文件夹的绝对路径”来设置(可以用;分开多个路径)。对于Eclipse开发环境上的应用程序,可以通过修改其启动参数,在VMarguments编辑框中加入前述参数。对于打包出来的Eclipse安装包,可编辑其启动目录下的application.ini(假设其启动文件为application.exe),在-vmargs后加入前述参数来设置java.library.path的值。需要注意的是,一旦JVM已经启动,则无法再修改java.library.path的内容了,也就是说,通过:个人收集整理勿做商业用途System.setProperty("java.library.path","c:\mylib");个人收集整理勿做商业用途这样的方式是无法达到目的的,因为该属性是只读的。Sun公司的论坛上曾经讨论过如何在代码中修改java.library.path的问题,结论是:不能通过代码修改!如果嫌"java-Djava.library
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- T/CSEA 35-2025纺织机械零件热喷涂陶瓷涂层 技术条件
- T/UNP 415-2024高性能汽车燃油喷射系统用不锈钢功能材料
- T/GSET 001-2025不同品牌、不同型号电梯群控调度方法和要求
- T/CI 864-2024市政管道清淤施工及验收技术规范
- T/CAFFCI 70-2023食品添加剂 缬草油
- T/CSAE 350-2024轮胎静态刚度特性通用试验方法
- 2025~2026学年江苏省南通市通州区苏教版五年级上册期中数学试卷【附答案】
- 2026学年湖南省常宁市六年级数学期末点睛提升能力提升卷详细参考解析详细答案和解析
- Photoshop专业技能考试试题及详细答案
- 2026年国家公务员政治理论应知应会知识试题库与答案
- 机器学习 课件全套 张旭东 第1-18讲 -概述、统计基础 -深度生成模型-3
- 2026住院医师规培-重庆-重庆住院医师规培(口腔全科)历年参考题库含答案详解
- 2025年10月 手机媒体概论(14237)自考真题
- 2026-2027学年五年级语文上册第三单元习作《故事新编》教学教学课件
- 2026建设银行校招笔试真题及答案
- GB/T 48023-2026数据中心冷板式液冷系统技术规范
- 2026年小学必读书目《安徒生童话》阅读测试试题及答案
- 食品加工厂厂长产品质量与生产效率绩效衡量表
- 旋挖成孔灌注桩施工监理实施细则
- DBJ33∕T 1020-2022 建设工程地质钻探安全技术规程 附条文说明
- 急救、生命支持类设备应急调配手册
评论
0/150
提交评论