这里定义了一个本地方法jni_test,该方法返回一个String。其中System.loadLibrary是用来加载本地库的(dll或者so)。

有了这个类以后,就可以调用javac命令编译,得到Example.class文件,然后就可以使用编译好的.class文件生成文件了。

在java中,提供了javah这个命令来生成本地方法的头文件。使用命令如下:

javah -classpath A -d B -jni C

其中,A是你的.class文件的路径,这样java就可以搜索到这个.class文件。B是将要生成的头文件的存放目录,可以根据需要指定。C是java类名,在这个例子中就是com.jni.test.Example。然后就可以在B目录下看到生成的头文件了。

在eclipse中一键调用javah自动生成文件

可是,这样不是有些麻烦吗???

可不是嘛,有了.class后还要在命令行里敲入javah那一串命令,对刚刚在eclipse中定义了本地方法的开发者来说显得过于繁琐了。如果能够在eclipse中定义好本地方法后,直接生成相应的头文件,那该多方便啊。别急,我这里就介绍一个方法。

首先在eclipse中点击下图图标的下拉菜单

然后点击External Tools Configurations

会弹出下面的页面,然后在那3个地方分别填入下图中的命令

其实,这里的操作就是把javah这个可执行程序当做外部工具引入eclipse中来了。调用的时候,eclipse就会执行javah,并且使用预设的arguments,即:

javah -classpath .;./classes -d "${project_loc} -jni ${java_type_name}"

可以看到,.class文件的搜索目录是当前工作目录和子目录classes(android开发时生成的.class是在classes这个子目录中,所以这里也加了这个目录,如果你不搞android开发,那不加这个目录也没关系)。当前工作目录就是上面设好的${project_loc}/bin,也就是你这个java工程的bin文件夹。这样javah就可以在该目录下找到本地方法的.class文件。-d
"${project_loc}"是为了让生成好的.h头文件直接被放置在java工程目录下,便于后续操作。 最后的${java_type_name}是动态的参数,你在生成.h头文件之前先在eclipse中选中本地方法那个java文件,这样java_type_name就自动变成了这个本地方法的名字。

设置好以后,我们来试着生成一下头文件,先在eclipse中选中刚刚定义好的本地方法Example.java,然后点击下图中的位置来调用javah这个外部工具,就可以自动生成文件了(需要在当前工程中刷新一下才能看到)。

这样设置好以后,将来各位同学在需要生成头文件时,只需写好本地方法的java类,然后鼠标点击一下就能够自动生成头文件了,是不是很方便啊。

【转】Eclipse中一键调用javah生成jni的头文件的更多相关文章

  1. 使用Javah 生成C/C++头文件

    注意:编写java的接口文件. 注意native代码端一定不要有大括号,且要有“:”结尾. public native int add(int x ,int y); 1. 需要让eclipse自动编译 ...

  2. ubuntu下整合eclipse和javah生成jni头文件开发android的native程序

    0:前言: 这两天一直在研究用android的jni调用第三方库,上网搜方法,但是都是泛泛而谈,没有demo,经过我几番折磨,写了n多的helloword工程,总是不成功,工程名字也就由helloow ...

  3. ubuntu下整合eclipse和javah生成jni头文件开发android的native程序(转)

    本文介绍两种利用javah命令生成jni头文件的方法,第一种为大众所知的javah命令,第二种为整合javah到eclipse里面.推荐第二种方式,方便快捷,随时修改随时生成 0:前提和条件: 1:u ...

  4. [转]ubuntu下整合eclipse和javah生成jni头文件开发android的native程序

    转载自:http://blog.csdn.net/jiuyueguang/article/details/9404237 本文介绍两种利用javah命令生成jni头文件的方法,第一种为大众所知的jav ...

  5. (原+转)Eclipse中Android调用OpenCv

    大部分都是参考下面的网址,如果感觉看起来不舒服,可以直接查看原网址.最后遇到了一点问题: Description      Resource Path Location   Type E:/~\cod ...

  6. 在Eclipse中设置进行JNI的头文件编译方法(转 http://blog.csdn.net/mirkerson/article/details/17187109)

    这两天在搞NDK开发,JNI的头文件进行编译的时候,要跑到对应的class文件路径下(通常是工程的bin目录),进行编译生成,很是不便,也容易出错,所以考虑在Eclipse中作为外部工具引入,所以便查 ...

  7. javah生成jni头文件时报错 Error: cannot access android.support...

    javah生成jni头文件时报错: Error: cannot access android.support.v7.app.AppCompatActivity class file for andro ...

  8. html中引入调用另一个公用html模板文件的方法

    html中引入调用另一个公用html模板文件的方法 https://www.w3h5.com/post/53.html 这里我使用jquery的方法 <body> <div id=& ...

  9. eclipse中如何查看一个android模拟器的内部文件

    eclipse中如何查看一个android模拟器的内部文件,有时要在其中添加一个文件夹或是什么的,要手动的做这件事,而不能够用代码去完成时,就要用这个方法了. 1.首先,打开一个安卓模拟器. 2.这个 ...

随机推荐

  1. [iOS微博项目 - 3.1] - 发微博界面

    github: https://github.com/hellovoidworld/HVWWeibo   A.发微博界面:自定义UITextView 1.需求 用UITextView做一个编写微博的输 ...

  2. Median of Two Sorted Arrays-----LeetCode

    There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted ...

  3. 使用struts2实现文件下载

    <action name="downloadAction" class=""> <result type="stream" ...

  4. Binding的Source从何而来?

    I. Binding to Object 1. Binding data using ObjectDataProvider AC:Let’s say there is a CLR based data ...

  5. new 运算符

    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/new

  6. mybatis 注解快速上手

    一.mybatis 简单注解 关键注解词 : @Insert : 插入sql , 和xml insert sql语法完全一样 @Select : 查询sql, 和xml select sql语法完全一 ...

  7. listView divider marginLeft marginRight

    要实现这样的效果: 新建drawable  用inset 进行实现.代码如下: <?xml version="1.0" encoding="utf-8"? ...

  8. WatchKit App Submission Issues

    查看原文: http://leancodingnow.com/watchkit-app-submission-issues/ I submitted a new version of my app P ...

  9. iOS 7 Pushing the Limits - Good & Bad Namings in Cocoa

    Cocoa is a dynamically typed language, and you can easily get confused about what type you are worki ...

  10. hdu1498 50 years, 50 colors --- 最小点覆盖

    给一个矩阵,里面有一些不同颜色的气球.每次能够消灭一行或一列中某一种颜色的气球,问你在k次及以内,有哪些颜色的气球是不管怎样也消不完的. 那么思路就是,对每一种颜色的气球求最小点覆盖.>k 则为 ...