我想MANIFEST.MF
在创建后修改JAR
以排除某些Class-Path
条目。为此,我决定使用zip4j
. 提取似乎工作正常,但要将MANIFEST.MF
文件放回JAR
,我使用以下代码:
String metaInfFolderName = "META-INF";
Path extractedManifestFilePath = Paths.get("...");
ZipFile zipFile = new ZipFile("Test-Zip-File.zip");
ZipParameters zipParameters = new ZipParameters();
zipParameters.setDefaultFolderPath(metaInfFolderName);
zipFile.addFile(extractedManifestFilePath.toFile(), zipParameters);
但是,此代码无法按预期工作:父目录总是最终被命名NF
而不是完整的META-INF
. 似乎起始字符被切断了。这可能是什么原因,或者是否有另一种有意义的可能性来替换JAR
s 内的文件(本质上只是ZIP
s)?
maven
依赖:
<dependency>
<groupId>net.lingala.zip4j</groupId>
<artifactId>zip4j</artifactId>
<version>2.6.1</version>
</dependency>
此外,我尝试使用此处jar
描述的实用程序,但是在调用命令时,内部的命令被删除而不是被替换。通过工作使用该实用程序但会损坏文件,因此它不再可运行:jar uf MyJAR.jar META-INF/MANIFEST.MF
MANIFEST.MF
JAR
zip
zip -ur MyJAR.jar "META-INF/MANIFEST.MF"
JAR
Error: An unexpected error occurred while trying to open file MyJAR.jar