运行可执行在罐子的ProcessBuilder [复制](Run Executable In Jar

2019-07-03 19:27发布

这个问题已经在这里有一个答案:

  • 是否有可能罐子了一个可执行文件,以便它可以从Java中运行? 1个回答

我有我建立的一个使用它通过的ProcessBuilder调用非Java可执行文件的应用程序:

ProcessBuilder pb = new ProcessBuilder(invocation);
pb.redirectErrorStream(true);
Process proc = pb.start();
InputStream is = proc.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);

不过,我想整齐地捆绑该应用程序为JAR文件本身,而不是要求它在同一目录放在外面。 有没有一种办法而不提取它运行该应用程序?

如果我需要删除的ProcessBuilder,这将是罚款,只要它的作品。 :)

Answer 1:

你基本上可以要求OS运行ZIP文件中的应用程序。 我不知道有什么方法可以做到这一点,而不首先解压缩。 即使它是一个Java应用程序,你需要调用Java可执行文件,因为它知道如何在它解析JAR文件和访问类和资源。

唯一还算简单的解决办法,我能想到的是将JAR的内容解压到一个临时文件夹,并从那里运行程序。 这可以以编程方式使用java.util.zip中的类来完成。



Answer 2:

你可以只捆绑可执行文件和JAR到另一个拉链。 这样,当用户提取,一切是你希望它是。



文章来源: Run Executable In Jar With ProcessBuilder [duplicate]