java的人patch方法_GitHub - zhanpple/java-hdifffpatch-native: java 调用本地方法,基于hdiffpatch完成二进制文件差分的代码...

这篇博客介绍了如何使用Java调用本地方法,结合hdiffpatch库完成二进制文件的拆分和差异计算。作者详细阐述了从创建helloworld示例到实现hdiff和hpatch的过程,包括修改头文件以适应Java调用,并给出编译生成动态库的步骤。
摘要由CSDN通过智能技术生成

java-hdifffpatch-native

java 调用本地方法,基于hdiffpatch完成二进制文件拆分的代码

---- 以下命令均在 ../src/main/java/cpp 目录下完成

1.helloworld

---- hello_HelloJNI.h cmd

javac -h . ../hello/HelloJNI.java

---- libhello.so cmd

gcc -fPIC -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/linux" -shared -o libhello.so HelloJNI.c

--文件 HelloJNI.c

然后生成libhello.so,将此文件加入到java文件的lib下

2.hdiff/hpatch

研究过程中的两个坑---

第一 需要写文件全路径

第二 cpp之间要显示的指定

---- hdiff_Hdiff.h cmd

javac -h jni ../hdiff/Hdiff.java

不过需要修改生成的 hdiff_Hdiff.h,java生成的.h是不带入参的,需要修改一下

原来:

JNIEXPORT jint JNICALL Java_hdiff_Hdiff_hdiff

(JNIEnv *, jobject, jstring, jstring, jstring);

修改为:

JNIEXPORT jint JNICALL Java_hdiff_Hdiff_hdiff

(JNIEnv *env, jobject thiz, jstring oldFilePath, jstring diffFilePath,

jstring newFilePath);

---- diff -> libhdiff.so cmd

g++ -fPIC -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/linux" -shared -o libhdiff.so ../cpp/jni/hdiffz.cpp ../cpp/jni/HDiff/diff.cpp jni/HDiff/private_diff/bytes_rle.cpp jni/HDiff/private_diff/compress_detect.cpp jni/HDiff/private_diff/suffix_string.cpp jni/HDiff/private_diff/libdivsufsort/divsufsort.c jni/HDiff/private_diff/libdivsufsort/divsufsort64.c jni/HDiff/private_diff/limit_mem_diff/adler_roll.c jni/HDiff/private_diff/limit_mem_diff/digest_matcher.cpp jni/HDiff/private_diff/limit_mem_diff/stream_serialize.cpp jni/HPatch/patch.c

---- hpatch_Hpatch.h cmd

javac -h jni ../hpatch/Hpatch.java

不过需要修改生成的 hpatch_Hpatch.h,java生成的.h是不带入参的,需要修改一下

原来:

JNIEXPORT jint JNICALL Java_hpatch_Hpatch_hpatch

(JNIEnv *, jobject, jstring, jstring, jstring);

修改为:

JNIEXPORT jint JNICALL Java_hpatch_Hpatch_hpatch

(JNIEnv *env, jobject thiz, jstring oldFilePath, jstring diffFilePath,

jstring newFilePath);

---- patch -> libpatch.so cmd

g++ -fPIC -I"$JAVA_HOME/include" -I"$JAVA_HOME/include/linux" -shared -o libhpatch.so ../cpp/jni/hpatchz.c jni/HPatch/patch.c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值