前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java里的native方法的使用正解

java里的native方法的使用正解

作者头像
forrestlin
发布2018-05-23 17:36:45
1.7K0
发布2018-05-23 17:36:45
举报
文章被收录于专栏:蜉蝣禅修之道

在网上看到各种帖子谈论java的native方法,这是java用来弥补其运行速度慢而利用C的措施,可以说是java与C/C++的接口,但是网上这类帖子太多而且讲述的方法都很复杂,今天我想总结一下。

步骤:

1.写一个java类,例如下面的HelloWorld.java

public class HelloWorld {  private native void print();  static  {   System.loadLibrary("Hello");  }  public static void main(String[] args) {     new HelloWorld().print();  } }

注意(1)上面的native关键字,在这是说明print方法不是用java实现的,static{}类似于初始化工作。

(2)System.loadLibrary("Hello");是程序要导入Hello.dll这个文件,这个文件是用C/C++写的,而且必须包含print()方法的实现。 (3)最好别用Eclipse写,因为我一开始这样做后死活都不能通过javah。

2.写完java文件后,打开命令行窗口,在java文件目录下输入javac HelloWorld.java进行编译生成HelloWorld.class文件,这一步就不多说了。

3.在class文件目录下再次用dos命令javah -jni HelloWorld生成HelloWorld.h文件

4.到重点了,打开vc6.0或者VS新建一个C++DLL工程,例如Hello,再在工程里新建一个Hello.c文件,写下以下代码:

 #include<jni.h> #include<stdio.h> #include"HelloWorld.h" JNIEXPORT void JNICALL Java_HelloWorld_print   (JNIEnv *env, jobject obj) {  printf("Hello World!\n");  return; }

注意:

(1)include jni.h文件,这个头文件在你jdk目录下的include目录下,但光这个头文件还不够,因为jni.h里面还include其他头文件,包括

  1. \jdk\include\win32\jawt_md.h   
  2. \jdk\include\win32\jni_md.h  
  3. 找出这些头文件后当然要拷贝到你的VC++或VS的Include目录下,如vc6.0的是E:\Program Files\Microsoft Visual Studio\VC98\Include
  4. 这一步相当重要,否则是不能通过编译的
  5. (2)把HelloWorld.h文件放到工程当前目录下
  6. 5.用vc或vs编译后便得到我们想要的Hello.dll
  7. 6.激动人心时刻到了,把Hello.dll文件放到java文件相同目录下运行,得到结果如下图所示

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2011年11月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档