我正在尝试使用ProcessBuilder
在我的Java
应用程序中启动JUnit测试。
我可以从命令行运行相同的命令而不会出现问题。从ProcessBuilder运行时是否需要使用jar的绝对路径?或者我可以使用相对路径吗?
在命令行上运行
java -cp .;lib/junit-4.12.jar org.junit.runner.JUnitCore com.test.Test1
在我的应用程序中运行
junit库位于lib文件夹
中应用/ 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
答案 0 :(得分:1)
使用时可以找到运行应用程序时类路径的内容
System.getProperty("java.class.path");
然后,相应地修改ProcessBuilder()
语句中的“cp”。
答案 1 :(得分:0)
设置您想要使用的ProcessBuilder的基本目录。
File libDir = new File("/opt/app/lib");
builder.directory(libDir);
这是我在@mazaneicha的评论后最终使用的解决方案,以便重新查看应用程序的类路径目录。