我正在尝试使用ProcessBuilder
在我的Java
应用程序中启动JUnit测试。
我可以在命令行中运行相同的命令而没有问题。在使用ProcessBuilder时,我需要使用绝对路径来运行jar文件吗?还是可以使用相对路径?
在命令行上运行
java -cp .;lib/junit-4.12.jar org.junit.runner.JUnitCore com.test.Test1
在我的应用程序中运行
junit库位于lib文件夹中
application/lib/junit-4.12.jar
ProcessBuilder builder = new ProcessBuilder(new String[] {"java", "-cp", ".;lib/junit-4.12.jar", "com.test.Test1"});
Process process = builder.start();
process.waitFor();
debug("process ended");
debug("process.exitValue() = " + process.exitValue());
输出:
process ended
process.exitValue() = 1
Error: Could not find or load main class org.junit.runner.JUnitCore
ProcessBuilder
语句的-cp中使用多个库?一旦我有了一个以上的库,“one.jar;two.jar”将会失败,但“one.jar”将会成功。 - ALMSystem.getProperty("path.separator");
来找到正确的分隔符。它们与操作系统有关。此外,还可以查看其他有关该主题的 SO 帖子: https://dev59.com/92855IYBdhLWcg3wHwaH - mazaneicha