【发布时间】:2020-09-01 00:55:44
【问题描述】:
我有一个 jar 文件,例如 apache-cassandra-3.11.6.jar。 首先,我拆分/分块成多个罐子,如下所示:
apache-cassandra1.jar apache-cassandra2.jar apache-cassandra3.jar apache-cassandra4.jar apache-cassandra5.jar apache-cassandra6.jar
然后我将它们重新组装成新的 Jar 文件,即 apache-cassandra_Merged.jar。 现在问题来了。
当我将原始 jar 文件(即 apache-cassandra-3.11.6.jar)与新的 Jar 文件(即 apache-cassandra_Merged.jar)进行比较时。那么它不匹配。
新建的jar文件是apache-cassandra_Merged.jar,体积也变小了。
请在下面找到我的代码供您参考:
/// Chunking/spliting into mutiple jars
Path path = Paths.get("/Original_Jar/apache-cassandra-3.11.6.jar");
byte [] data = Files.readAllBytes(path); // Will read all bytes at once
现在将总字节分成相等的部分,然后一个一个地写入每个小罐子。
int count = 0;
for(byte[] rangeData : Arrays.copyOfRange(data, rangeSTART, rangeEND)){
FileOutputStream fileOutputStream1 = new FileOutputStream("/Cassandra_Image/Chunked_Jar/apache-cassandra"+count+".jar");
fileOutputStream1.write(rangeData);
}
//合并回一个jar 对于合并,我使用了相同的方式。为每个小/分块的 jar 创建字节数组,并一一写入 FileOutputStream("/Merged_Jar/apache-cassandra_Merged.jar")。
如果我应该使用其他方法/算法来拆分 jar 并重新组装它,请告诉我,这将确保分块和合并后数据的原创性。
注意:实际上我想将罐子转移到任何服务器/目录,在那里我应该转移一个大小有限的罐子,所以对于大尺寸的罐子,我需要分成小罐子并一个接一个地发送,然后再重新组装它们目标目录/位置,它应该是原始jar。
提前致谢。
【问题讨论】:
-
你想创建一个包含所有依赖项的胖 jar 文件吗?
-
实际上我想将罐子转移到任何服务器/目录,在那里我应该转移一个大小有限的罐子,所以对于大尺寸的罐子,我需要分成小罐子,然后一个接一个地发送将它们重新组装到目标目录/位置,它应该是原始 jar。我希望它能澄清您的查询? @Sambit
标签: java file jar chunked-encoding chunked