我尝试从eclipse中创建的java应用程序运行jar文件。 当我使用下面的源代码运行jar文件然后激活Unable访问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());
答案 0 :(得分:1)
听起来像TestJava.jar
在另一个目录中。如果您在Eclipse中运行此代码,那么当前工作目录将与Eclipse项目的文件夹相同(除非您以不同方式配置它,这是Eclipse的默认运行位置)。通过绝对路径或相对于当前工作目录的路径指定TestJava.jar
的路径。
您需要注意的另一件事 - 您需要同时使用您正在创建的Process
的错误流和输出流。 Process
实例的默认输出/错误流缓冲区大小不是很大,如果已满,将导致Process
无限期地阻塞更多缓冲区空间。我建议在单独的Thread
中使用每个流。
答案 1 :(得分:0)
设置应运行此进程的工作目录。使用以下语句设置工作目录。
Runtime.getRuntime().exec(command, null, new File("path_to_directory"));
答案 2 :(得分:0)
首先在cmd窗口中尝试java -jar命令,看看是否可以运行TestJava.jar。然后尝试从代码中运行相同的命令。
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("java -jar TestJava.jar");
System.exit(0);
答案 3 :(得分:0)
您需要提供Java命令的完整路径。
例如,在Windows下你需要像
这样的东西C:/Program Files/java/jre/bin/java.exe
ProcessBuilder
&尝试执行命令时,Runtime.exec
不会考虑系统路径