【问题标题】:Run Executable In Jar With ProcessBuilder [duplicate]使用 ProcessBuilder 在 Jar 中运行可执行文件 [重复]
【发布时间】:2009-08-26 16:39:39
【问题描述】:

我已经构建了一个应用程序,它使用了一个通过 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,那很好,只要它有效。 :)

【问题讨论】:

    标签: java jar execute processbuilder


    【解决方案1】:

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

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

    【讨论】:

    • 我想的也差不多。我可能会让它检查文件夹是否存在,如果不存在,它将从 jar 中提取它然后执行它。谢谢!
    【解决方案2】:

    您可以将可执行文件和 JAR 捆绑到另一个 zip 中。这样,当它被用户提取时,一切都在你期望的地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多