服务简介
这个项目的目的是集成所有自定义JNI
,然后其他服务通过http
进行调用
使用流程
- 写好 native 方法,例如:
java public class HeatMapUtil { public static native Point transAxis(int cameraType, Point centerPoint, Point marginPoint, Point[] cameraPoints, Point[] mapPoints, Point inputPoint); }
- 编译出 class 文件
- 在最外层包的目录下执行命令
javah xxx
,例如: ```shell 在 com 所在的目录下执行 javah com.viontech.keliu.jni.HeatMapUtil
java10以上的版本移除了javah,需要用 javac -h 命令
4. 将编译出的 `.h` 文件交给其他组人员,由他们实现方法
5. 实现方法后在需要的平台进行编译得到动态链接库,windows 下编译出 `.dll` 文件, linux 下编译出 `.so` 文件
6. 将动态链接库放入 `resources/lib` 目录下面的 `dll` 或 `so` 目录下
7. 将动态链接库依赖的文件放入 `predll` 或 `preso` 目录下
8. 运行服务测试方法是否能成功
# 资料
- [JNI 在 SpringBoot 中的应用](https://www.javatt.com/p/24322)
- [SPRINGBOOT环境下JAVA调用C程序生成动态链接库(.SO文件),并调用(基于JNI,UBUNTU)](https://www.freesion.com/article/8856114791/)
- [JNI返回Java对象](https://juejin.cn/post/6844903919882256391)
- [JNI 在 SpringBoot 中的应用](https://blog.csdn.net/lj402159806/article/details/86169807)
- [如何使用JNI从C中的jobject获取值](http://www.voidcn.com/article/p-rneljcrp-bxy.html)
- [jni-jobject操作对象](https://blog.csdn.net/jisuanji198509/article/details/81210727)
- [JNI 数据类型转换](https://blog.csdn.net/tantion/article/details/84248654)