博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 生成 JNI 头文件
阅读量:2288 次
发布时间:2019-05-09

本文共 2187 字,大约阅读时间需要 7 分钟。

如果不知道干什么,那就学习吧

目录

 

正文

【参考文章】:

【参考文章】:

  项目需要调用 C++动态库,由于项目包结构发生变化,需要重新生成本地方法的头文件,记录一下基本使用方法。

1. 使用 javac 生成 JNI 头文件

1.1 基本使用方法

  1.  JDK版本必须在 1.8 以上

  2. 执行命令  javac  -encoding  utf8  -h targetDir   sourceFile

1.2 示例

1.2.1 Java文件目录结构

  

1.2.2  在 NativeCpp.java 文件所在目录打开命令行

1.2.3  执行命令 javac -encoding utf8 -h . NativeCpp.java(注意 点 后面有个空格)

  

  -encoding  utf8   指定源文件编码格式

  -h  .  头文件的输出目录,. 表示当前目录,后面必需加个空格

  NativeCpp.java  源文件

1.2.4 结果

  

 

3. 生成的头文件内容

 

/* DO NOT EDIT THIS FILE - it is machine generated */#include 
/* Header for class com_streamax_s17_fms_business_jni_NativeCpp */#ifndef _Included_com_streamax_s17_fms_business_jni_NativeCpp#define _Included_com_streamax_s17_fms_business_jni_NativeCpp#ifdef __cplusplusextern "C" {#endif/* * Class: com_streamax_s17_fms_business_jni_NativeCpp * Method: parseBlacBox * Signature: (Ljava/lang/String;II)Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_streamax_s17_fms_business_jni_NativeCpp_parseBlacBox (JNIEnv *, jobject, jstring, jint, jint);#ifdef __cplusplus}#endif#endif

 2. 使用 javah 生成 JNI 头文件

2.1 基本使用方法

  在包结构开始的目录打开命令行窗口;

  执行命令:javah -d targetDir  -classpath . 包路径+类名(类名不包含文件后缀名)

2.1.1 在包结构开始的目录打开命令行窗口

  在源代码包结构开始处或者class文件包结构开始处都可以;

  

  

2.1.2 执行命令:javah -classpath . com.streamax.s17.fms.business.jni.NativeCpp

  -classpath  .  指定加载类的路径,因为当前目录是包结构开始的目录,所以使用 . ,表示当前目录;

  com.streamax.s17.fms.business.jni.NativeCpp  本地方法所在的包路径+类名(注意没有.java或者.class的后缀);

2.1.3 结果

  

  不指定输出路径,生成的头文件默认在当前目录下;

  使用 -d  targetDir 指定输出路径,

  javah -d ../ -classpath . com.streamax.s17.fms.business.jni.NativeCpp  此处指定头文件生成在当前目录的父目录

2.1.4 头文件内容

/* DO NOT EDIT THIS FILE - it is machine generated */#include 
/* Header for class com_streamax_s17_fms_business_jni_NativeCpp */#ifndef _Included_com_streamax_s17_fms_business_jni_NativeCpp#define _Included_com_streamax_s17_fms_business_jni_NativeCpp#ifdef __cplusplusextern "C" {#endif/* * Class: com_streamax_s17_fms_business_jni_NativeCpp * Method: parseBlacBox * Signature: (Ljava/lang/String;II)Ljava/lang/String; */JNIEXPORT jstring JNICALL Java_com_streamax_s17_fms_business_jni_NativeCpp_parseBlacBox (JNIEnv *, jobject, jstring, jint, jint);#ifdef __cplusplus}#endif#endif

 

转载地址:http://cfbnb.baihongyu.com/

你可能感兴趣的文章
三年Java开发,年底跳槽挂了阿里和字节,却收获美团offer,分享大厂面试心得
查看>>
4面全过之后还有交叉面,阿里面试也太“刺激”了
查看>>
手慢无!出自美团内部的精通Java并发编程手册,打倒高并发
查看>>
一线互联网大厂面经分享:阿里三面+头条四面+腾讯二面+美团四面
查看>>
快手三面(Java岗),意向已拿,盘点一下面试官都问了些啥?
查看>>
“刚刚”顺丰校招二面+美团社招三面面经,分享给准备冲刺金三银四的你
查看>>
多位阿里专家整理总结多线程与高并发实战开发手册,你都具备了?
查看>>
4面字节跳动,终于“跳进去”了 分享一波字节的面经
查看>>
阿里、字节等大厂Java面试汇总:心态准备+简历+50道高频面试题+面试经验总结
查看>>
阿里架构师吐血整理:从源码到架构的Spring全系列笔记,已全部分享
查看>>
2021年最新京东技术岗现场三面:jvm调优+高并发+算法+网络+数据库+设计模式
查看>>
有了阿里P8大牛手写的720页Java高级面试手册,offer稳了
查看>>
面试官都爱问的Spring源码:Spring与Mybatis高级整合
查看>>
好文推荐:微服务架构下的分布式事务基础入门
查看>>
Spring 异步实现原理与实战分享
查看>>
JVM源码分析之jstat工具原理完全解读
查看>>
面经分享:如何一招破解 Java 集合类面试题?
查看>>
Java注解是如何玩转的,面试官和我聊了半个小时
查看>>
一位阿里P7的面试题经验分享,希望能帮助到你
查看>>
一文Get所有 Redis 性能问题分析手段
查看>>