JNI
本地方法接口JNI(java native interface)
梦里藍天
不积跬步,无以至千里;不积小流,无以成江海
展开
-
JNI中方法的简要说明
以下内容转自:https://www.jianshu.com/p/5d5b22161259。GetArrayElements 和ReleaseArrayElements成对使用。转载 2022-11-03 11:16:18 · 584 阅读 · 0 评论 -
JVM虚拟机运行时数据区の本地方法栈
什么是本地方法本地方法就是JVM所在的运行环境中的方法,比如windows系统或者linux系统中用C或者C++编写的方法。本地方法的出现主要是因为JAVA无法对操作系统底层进行操作,但是可以通过本地方法接口JNI(java native interface)调用其他语言来实现底层的访问。Java中如何实现本地方法在Java方法上添加native关键字即可调用本地方法(当然不像一句话说的这么简单,还需要遵循JNI的规范)。一个native方法就是一个Java调用非Java代码的接口。在定义一个nat原创 2020-12-29 21:19:33 · 133 阅读 · 0 评论 -
DLL导致tomcat服务器崩溃
当前的生产环境使用的是tomcat8.5,JDK8,在一次更新后每隔3 5天就会导致tomcat崩溃,服务器无法访问。查看系统日志是内存溢出,记得更新时只是更改了DLL动态链接库,打开源码发现里面在调试时加了几个printf打印调试内容,DLL内的打印内容并不能在服务器运行时被打印出来,在每次关闭服务器之前被打印,时间长了内存区被占满无法被JAVA垃圾回收,注释掉C源码中的打印解决问题。...原创 2020-03-19 20:49:25 · 799 阅读 · 0 评论 -
jni调用DLL动态链接库过程
1.编写Java类文件,调用DLL动态链接库。public class CopyingDecrypt { static{System.loadLibrary("CopyingDecrypt");}; public native int[] getCopyingInfo(byte[] OrgData); public native short[] getRebirthI原创 2017-11-11 10:00:21 · 899 阅读 · 0 评论 -
java 使用jni,c文件中的接口
JNI几乎不怎么使用,目前做的项目需要和硬件交互,而硬件提供的加解密函数都是C语言写的,转换成JAVA比较麻烦,所以使用了java来调用动态链接库,网上的资料比较少,自己也是边搜索边写,前面 jni调用DLL动态链接库过程,没有C文件中如何操作,把自己写的记录下来,第一次使用全当参考:头部的引用:#include "jni.h" //jni的依赖#include "jni_md.h"原创 2018-01-29 09:03:42 · 638 阅读 · 1 评论 -
invalid conversion from ‘unsigned char*‘ to ‘const jbyte* {aka const signed char*}‘
jni遇到invalid conversion from ‘unsigned char*’ to ‘const jbyte* {aka const signed char*}’错误 不支持格式之间的转换 错误的栗子:EEP_Buffer C中的数组 uint8_t i; FixDirectFunc(Type, PulseWidth, Data, KeyNum); //C中的...原创 2018-07-10 16:09:18 · 9395 阅读 · 0 评论 -
记一次Arthas调试生产服务器BUG的记录,因未初始化导致的JNI结果错误
感谢阿里开源的好工具 Arthas 用户文档在偶然的情况下发现了这个bug,这个BUG在启动tomcat后无论正确还是错误的参数返回的结果都是正确的,只有在启动tomcat后传递过一次正确参数再传递错误的才会出现,而且返回的是上一次正确的结果,当时发现bug并没有发现这个规律,所以使用阿里的Arthas在线上服务器上进行调试。首先测试了一下调用C的方法,发现返回了结果,把这个结果保存下来然...原创 2019-02-28 12:00:27 · 601 阅读 · 0 评论