删除JAR文件注释

时间:2019-05-15 10:39:15

标签: java jar zip archive allatori

当我在JAR文件上运行类似Converted Tiff的混淆器时,它将在归档文件中添加一条注释,例如Obfuscation by Allatori Obfuscator http://www.allatori.com

使用allatori,可以通过编辑存档注释来删除此注释。

但是,我没有找到一种方法来将批处理脚本或Java代码集成到我的构建过程中。

怎么办?

2 个答案:

答案 0 :(得分:3)

这是使用WinRAR CLI更新存档文件注释的方式:

for %I in ("E:\YOUR\JAR\LOCATION\*.jar") do @"%ProgramFiles%\WinRAR\WinRAR.exe" c -zBLANK_COMMENT_FILE.txt "%I"

在运行此命令的地方创建一个名为BLANK_COMMENT_FILE.txt的空白文件。

以管理员权限运行此命令。

希望这会对您有所帮助。

答案 1 :(得分:2)

我想您可以复制zip文件而不复制评论。

public static void removeComment(Path file) throws IOException {
    Path tempFile = Files.createTempFile("temp", ".zip");
    copyZipFile(file, tempFile, false);
    Files.move(tempFile, file, StandardCopyOption.REPLACE_EXISTING);
}

public static void copyZipFile(Path file, Path newFile, boolean copyComment) throws IOException {
    try (ZipFile zipFile = new ZipFile(file.toFile());
            ZipOutputStream outputStream = new ZipOutputStream(new BufferedOutputStream(Files.newOutputStream(newFile)))) {
        if (copyComment) {
            outputStream.setComment(zipFile.getComment());
        }
        Enumeration<? extends ZipEntry> entries = zipFile.entries();
        while (entries.hasMoreElements()) {
            copyEntry(zipFile, outputStream, entries.nextElement());
        }
    }
}

private static void copyEntry(ZipFile zipFile, ZipOutputStream outputStream, ZipEntry entry) throws IOException {
    ZipEntry newEntry = (ZipEntry) entry.clone();
    outputStream.putNextEntry(newEntry);
    IOUtils.copy(zipFile.getInputStream(entry), outputStream);
}