2012-09-05 205 views
-1

可能重复:
Run Java program into another Program运行jar文件

我尝试这是在Eclipse中创建的Java应用程序运行jar文件。 当我用下面的源代码运行jar文件,然后火无法访问jar文件错误

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()); 
+1

也许jar文件位于不同的文件夹? – jdevelop

+1

Arrgh ..多少次以及多少重复的问题你会忽略建议? :/ –

回答

0

设置好这个过程应该运行的工作目录。使用下面的语句设置工作目录。

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

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

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

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

例如,在Windows下你需要像

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

ProcessBuilder & Runtime.exec努力执行你的命令

1

听起来​​处于时不占用系统路径考虑不同的目录。如果您在Eclipse中运行此代码,那么当前工作目录将与Eclipse项目文件夹相同(除非您以不同方式配置它,这是Eclipse的默认运行位置)。通过相对于当前工作目录的绝对路径或路径指定到​​的路径。

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