使用Javah 生成C/C++头文件的误区 找不到 ‘XX.XXXX.XX.

PS:最近在用jni,一会写java一会写c++的感觉真让人头疼。然后在使用javah的时候,遇到了一点点小问题,分享给大家。

javah 是一个很棒的工具,可以通过获取.class 文件,而生成对应的C++文件,其中包含java 代码中的所有本地方法的JNI 存根,也就是定义成native 的那些方法。如果你正在使用一个类的JNI 存根,而且你已经把这个类定义为包的一部分,那么必须要完全限定类的命名。感觉javah好像一个反编译工具一样。恩,就是这样。

举例说明,我在用eclipse编写一个java文件,随后eclipse编译生成一个.class文件,在bin 目录下,于是我果断进入我的文件夹中,XX/XXXX/XXX 里面有我的 .class文件,于是我按照指令,javah -jni XX.XXXX.XX.类名,结果他提示我找不到‘XX.XXXX.XX.类名’的类文件。:

于是退出到 bin目录下,重新输入那个指令,得到了同样的答案!

郁闷怎么样才能解决,后来找到答案,首先要保证目录是 java包的上一级路径,如果是eclipse编译的话,那么就是在bin目录下了,使用指令

javah -classpath . XX.XXXX.XXX.CLASSNAME

就可以了!!注意中间一个单独的小数点!然后你就能得到你生成的.h 文件了!!

将C语言梳理一下,分布在以下10个章节中:

  1. Linux-C成长之路(一):Linux下C编程概要 http://www.linuxidc.com/Linux/2014-05/101242.htm
  2. Linux-C成长之路(二):基本数据类型 http://www.linuxidc.com/Linux/2014-05/101242p2.htm
  3. Linux-C成长之路(三):基本IO函数操作 http://www.linuxidc.com/Linux/2014-05/101242p3.htm
  4. Linux-C成长之路(四):运算符 http://www.linuxidc.com/Linux/2014-05/101242p4.htm
  5. Linux-C成长之路(五):控制流 http://www.linuxidc.com/Linux/2014-05/101242p5.htm
  6. Linux-C成长之路(六):函数要义 http://www.linuxidc.com/Linux/2014-05/101242p6.htm
  7. Linux-C成长之路(七):数组与指针 http://www.linuxidc.com/Linux/2014-05/101242p7.htm
  8. Linux-C成长之路(八):存储类,动态内存 http://www.linuxidc.com/Linux/2014-05/101242p8.htm
  9. Linux-C成长之路(九):复合数据类型 http://www.linuxidc.com/Linux/2014-05/101242p9.htm
  10. Linux-C成长之路(十):其他高级议题

xx

相关推荐