【问题标题】:Run jar file from java application [duplicate]从java应用程序运行jar文件[重复]
【发布时间】:2012-09-05 17:12:47
【问题描述】:

可能重复:
Run Java program into another Program

我尝试从在 Eclipse 中创建的 java 应用程序运行 jar 文件。 当我使用下面的源代码运行 jar 文件然后触发 Unable to access jarfile 错误

Process process = run.exec("java -jar  TestJava.jar");
InputStream inError = process.getErrorStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inError));
System.out.println("Error=" + bufferedReader.readLine());

【问题讨论】:

  • 可能jar文件位于不同的文件夹中?
  • Arrgh.. 你会忽略多少次和多少重复的问题? ://

标签: java eclipse process jar runtime.exec


【解决方案1】:

听起来TestJava.jar 位于不同的目录中。如果您在 Eclipse 中运行此代码,那么当前工作目录将与您的 Eclipse 项目的文件夹相同(除非您对其进行了不同的配置,这是 Eclipse 的默认运行位置)。通过绝对路径或相对于当前工作目录的路径指定TestJava.jar 的路径。

您需要注意的另一件事 - 您需要同时使用您正在创建的 Process 的错误流和输出流。 Process 实例的默认输出/错误流缓冲区大小不是很大,如果已满,将导致 Process 无限期地阻塞以获取更多缓冲区空间。我建议在单独的Thread 中使用每个流。

【讨论】:

    【解决方案2】:

    设置该进程应该运行的工作目录。使用以下语句设置工作目录。

    Runtime.getRuntime().exec(command, null, new File("path_to_directory"));
    

    【讨论】:

      【解决方案3】:

      首先在cmd窗口尝试java -jar命令,看看是否可以运行TestJava.jar。然后尝试从您的代码中运行相同的命令。

      Runtime runtime = Runtime.getRuntime();
      Process proc = runtime.exec("java -jar TestJava.jar");
      System.exit(0);
      

      【讨论】:

        【解决方案4】:

        您需要提供 Java 命令的完整路径。

        例如,在 windows 下你需要类似

        C:/Program Files/java/jre/bin/java.exe
        

        ProcessBuilder & Runtime.exec 在尝试执行命令时不要考虑系统路径

        【讨论】:

          猜你喜欢
          • 2015-07-12
          • 1970-01-01
          • 1970-01-01
          • 2023-03-16
          • 2012-11-30
          • 1970-01-01
          • 2013-08-01
          • 2018-06-25
          • 2013-06-30
          相关资源
          最近更新 更多