如何从 Java 中的包装 Jar 中提取文件
How to extract file from wrapped Jar in Java
文件 (exe) 位于 JAR 文件中,使用 Launch4j 将其包装为 EXE。
我的可执行文件(包裹在 EXE 中的 JAR 文件):
myProgram.exe
可执行位置
myProgram.exe/program.jar/resources/sub-program.exe
如何运行(或解压到临时目录)子program.exe和运行带参数? sub-program.exe -f -q
如果子程序是临时文件,我可以运行它为:
String exeLocation = System.getProperty("java.io.tmpdir") + "sub-program.exe";
String params = " -f -q";
ProcessBuilder process = new ProcessBuilder("cmd.exe", "/c", exeLocation + params);
如何从打包的 Jar 文件中提取文件?我想没有办法 运行 它在包装的 Jar 文件中。
您是否尝试以编程方式从 jar 中 运行 它?如果没有,您可以事先使用 winzip 手动解压缩(jar 基本上只是一个 zip 文件)。
我应该注意到,尽管您尝试做的事情真的很奇怪。
您可以通过 getClass().getResourceAsStream("/resources/sub-program.exe")
之类的方式为类路径中的资源获取 InputStream
。您可以从流中读取并在任何您喜欢的地方创建一个文件(例如,在您提示的临时目录下),然后执行它。
文件 (exe) 位于 JAR 文件中,使用 Launch4j 将其包装为 EXE。
我的可执行文件(包裹在 EXE 中的 JAR 文件):
myProgram.exe
可执行位置
myProgram.exe/program.jar/resources/sub-program.exe
如何运行(或解压到临时目录)子program.exe和运行带参数? sub-program.exe -f -q
如果子程序是临时文件,我可以运行它为:
String exeLocation = System.getProperty("java.io.tmpdir") + "sub-program.exe";
String params = " -f -q";
ProcessBuilder process = new ProcessBuilder("cmd.exe", "/c", exeLocation + params);
如何从打包的 Jar 文件中提取文件?我想没有办法 运行 它在包装的 Jar 文件中。
您是否尝试以编程方式从 jar 中 运行 它?如果没有,您可以事先使用 winzip 手动解压缩(jar 基本上只是一个 zip 文件)。
我应该注意到,尽管您尝试做的事情真的很奇怪。
您可以通过 getClass().getResourceAsStream("/resources/sub-program.exe")
之类的方式为类路径中的资源获取 InputStream
。您可以从流中读取并在任何您喜欢的地方创建一个文件(例如,在您提示的临时目录下),然后执行它。