Java 使用ProcessBuilder在Jar中运行可执行文件

Java 使用ProcessBuilder在Jar中运行可执行文件,java,jar,execute,processbuilder,Java,Jar,Execute,Processbuilder,我构建了一个应用程序,它使用非Java可执行文件,并通过ProcessBuilder调用该文件: ProcessBuilder pb=新的ProcessBuilder(调用) pb.重定向错误流(真) processproc=pb.start() InputStream=proc.getInputStream() InputStreamReader isr=新的InputStreamReader(is) BufferedReader br=新的BufferedReader(isr) 但是

我构建了一个应用程序,它使用非Java可执行文件,并通过ProcessBuilder调用该文件:


ProcessBuilder pb=新的ProcessBuilder(调用)
pb.重定向错误流(真)
processproc=pb.start()

InputStream=proc.getInputStream()
InputStreamReader isr=新的InputStreamReader(is)
BufferedReader br=新的BufferedReader(isr)

但是,我希望将该应用程序整齐地捆绑到jar文件本身中,而不是要求将其放在同一目录之外。有没有办法运行此应用程序而不提取它


如果我需要删除ProcessBuilder,只要它能工作就可以了。:)

您实际上是要求操作系统在ZIP文件中运行应用程序。我不知道有什么方法不先提取它就可以这样做。即使它是Java应用程序,您也需要调用Java可执行文件,因为它知道如何解析JAR文件并访问其中的类和资源


我能想到的唯一相当简单的解决方法是将JAR的内容提取到一个临时文件夹中,然后从那里运行程序。这可以使用java.util.zip中的类以编程方式完成,您可以将可执行文件和JAR捆绑到另一个zip中。这样,当用户提取它时,一切都在您期望的地方。

我也这么认为。我可能会让它检查文件夹是否存在,如果不存在,它将从jar中提取它,然后执行它。谢谢