-1

可能重复:
将 Java 程序运行到另一个程序中

我尝试从在 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());
4

4 回答 4

1

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

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

于 2012-09-05T17:23:22.050 回答
0

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

Runtime.getRuntime().exec(command, null, new File("path_to_directory"));
于 2012-09-05T17:21:42.777 回答
0

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

Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("java -jar TestJava.jar");
System.exit(0);
于 2012-09-05T17:22:21.843 回答
0

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

例如,在 Windows 下,你需要类似的东西

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

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

于 2012-09-05T17:22:30.397 回答