Der einfachste Weg, das JAR zu aktualisieren: Verwenden Sie das JAR als Dateisystem, um die Dateien im JAR zu aktualisieren

package demo;

import java.util.*;
import java.net.URI;
import java.nio.file.Path;
import java.nio.file.*;

/**
 * 更新jar最简单办法: 把jar当成文件系统 以更新jar中文件
 */
public class JarFSUpdateDemo {
    
    
    public static void main(String [] args) throws Throwable {
    
    
        Map<String, String> env = new HashMap<>();
        env.put("create", "true");
        // locate file system by using the syntax
        // defined in java.net.JarURLConnection
//        URI uri = URI.create("jar:file:D:/xxx/user.jar");//不识别的写法
//        URI uri = URI.create("D:/xxx/user.jar");//不识别的写法
//        URI uri = URI.create("jar:file:D:\\xxx\\user.jar");//不识别的写法
        URI uri = URI.create("jar:file:/xxx/user.jar");//正确写法,由此可见如果文件在F盘,那应该先切换到F盘:"cd /d F:\"

        try (FileSystem zipfs = FileSystems.newFileSystem(uri, env)) {
    
    
            Path externalTxtFile = Paths.get("plugin-out.xml");
            Path pathInZipfile = zipfs.getPath("/META-INF/plugin.xml");
            // copy a file into the zip file
            Files.copy( externalTxtFile,pathInZipfile,
                    StandardCopyOption.REPLACE_EXISTING );
        }
    }
}

おすすめ

転載: blog.csdn.net/hfcaoguilin/article/details/129650933