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 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 fileFiles.copy( externalTxtFile,pathInZipfile,StandardCopyOption.REPLACE_EXISTING );}}
}