1

嗯 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 文件的依赖项(其他 jar 文件)就在它旁边的一个名为 lib 的文件夹中。当我打开 PowerShell 或命令提示符并手动输入

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

该应用程序完美执行。为什么不来自我的 java 应用程序?对于堆栈溢出的类似问题,我尝试了许多答案,但没有一个有效。一些例子: - 重新启动的 netbeans - 关闭和重新打开的项目 - 重建 proc.jar

感谢您的每一个帮助 - 乔伊

4

2 回答 2

2

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

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

编辑:

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

ProcessBuilder("java", "-jar", path, arg1, arg2, ...)
于 2013-05-16T18:48:10.310 回答
0

对不起,我还不能发表评论,但也许你应该使用:

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

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

于 2013-05-16T18:00:28.983 回答