java - 如何使用进程在目录中运行 jar 文件

标签 java eclipse process

我正在尝试使用java中的进程来运行我的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 中运行它呢?

最佳答案

我发现了问题。

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);

关于java - 如何使用进程在目录中运行 jar 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24173880/

相关文章:

eclipse - 使用Eclipse 3.6 Play 2.0,Scala模板编辑

objective-c - 哪个应用程序有键盘焦点?

java - 测试仪的类逻辑错误显示以前的时间而不是新的

java - 按后退按钮到另一个 Activity

Java RSA 加密不断生成无法解密的输出?

java - 错误 : java. lang.UnsupportedOperationException:无法转换为维度:type=0x3

eclipse - 在 git 文件中跟踪 Eclipse 任务列表

java - 使用代码终止 Eclipse(在 Java 中)

javascript - Stack Overflow 站点如何快速执行类似 Ajax 的功能?

java - 在 Java 中更新 BigQuery 架构/添加新列