尝试执行外部jar作为Process时无法访问jar文件

时间:2013-05-16 17:54:14

标签: java

好netbeans Java 7u17项目。我正在尝试执行一个依赖于以下方式的外部jar文件:

ProcessBuilder pb = new ProcessBuilder(new String[]{"java", "-jar", String.format("%s %s", path, cmde)});
pb.redirectErrorStream(true);
Process proc = pb.start();

当我执行此应用程序时,我收到以下错误消息:

Error: Unable to access jarfile C:/Users/XXXX/Documents/SampleApplication/ProcessTest/proc.jar -k

jar文件在它旁边的一个名为lib的文件夹中有其依赖项(其他jar文件)。当我打开PowerShell或命令提示符并手动输入

java -jar C:/Users/XXXX/Documents/SampleApplication/ProcessTest/proc.jar -k

应用程序完美执行。为什么不从我的java应用程序?我尝试了很多来自堆栈溢出的类似问题的答案,但没有一个工作。一些例子:   - 重新启动netbeans   - 封闭&重新开放的项目   - 重建了proc.jar

感谢您的帮助   - 乔伊

2 个答案:

答案 0 :(得分:2)

我也解决不了,但我有一个解决方法 创建一个运行jar的bat脚本并执行该bat文件,如:

ProcessBuilder pb = new ProcessBuilder("c:\\...\\runproc.bat");

修改

您需要逐个拆分命令参数,例如:

ProcessBuilder("java", "-jar", path, arg1, arg2, ...)

答案 1 :(得分:0)

很抱歉答案,我还不能发表评论,但也许您应该使用:

//This is correct
String path = "C:\\xxx\\xxx";
//This is incorrect
String path = "C:/xxx/xxx";

我只是假设,因为你的输出显示“/”而不是windows标准“\”。