我试图在java中使用Process来运行我的AppData文件夹中的jar文件(我正在运行Windows 7)。我的代码如下,
File directory = new File(System.getProperty("user.home") + "/AppData/Roaming" + "/Folder WithMyJar");
directory.mkdir();
Process p = Runtime.getRuntime().exec("java -jar " + directory.getPath() + "\\" + "myJar.jar" + "arg1 arg2");
System.exit(0);
当我在命令提示符下使用相同的路径时,jar会正常工作;然而,一旦我在eclipse中尝试相同的事情,它就不会运行,也不会给它带来任何错误,为什么它会赢。
我应该在将jar文件放入AppData文件夹之前添加,我可以从eclipse在桌面上运行相同的jar文件。
那么我将如何在eclipse中运行呢?
答案 0 :(得分:0)
我发现了问题。
File directory = new File(System.getProperty("user.home") + "/AppData/Roaming" + "/Folder WithMyJar");
directory.mkdir();
Process p = Runtime.getRuntime().exec("java -jar " + directory.getPath() + "\\" + "myJar.jar arg1 arg2");
InputStream inError = process.getErrorStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inError));
System.out.println("Error=" + bufferedReader.readLine());
使用最后3行代码从中查找错误。因为我打开的文件是一个完全不同的项目,错误不会在eclipse中打印出来,因为我在技术上没有运行我试图在eclipse中打开的项目,而是在系统上。因此,使用InputStream和BufferedReader从进程中获取错误,它能够给出错误:"无法访问C:\ Home \ AppData \ Roaming \ My"中的jar文件 看着你可以说这不是完整的路径。因为jar文件的路径中有空格,所以在Windows上,你必须用引号括起路径。
给我最后的代码:
String dir = '"' + directory.getPath() + "\\" + "myJar.jar" + '"';
Process p = Runtime.getRuntime().exec("java -jar " + dir);