使用 -cp 和 jar 位置无法使用 Java ProcessBuilder 找到或加载 class
Can not find or load class with Java ProcessBuilder using -cp and jar location
我正在尝试使用 ProcessBuilder
在我的 Java
应用程序中启动 JUnit 测试。
我能够从命令行 运行 毫无问题地执行相同的命令。从 ProcessBuilder 中 运行ning 时我需要使用 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
您可以在 运行 您的应用程序中找到类路径,方法是使用
System.getProperty("java.class.path");
然后,相应地修改 ProcessBuilder()
语句中的 "cp"。
设置您要使用的 ProcessBuilder 的基本目录。
File libDir = new File("/opt/app/lib");
builder.directory(libDir);
这是我在@mazaneicha 评论重新查看应用程序的类路径目录后最终使用的解决方案。
我正在尝试使用 ProcessBuilder
在我的 Java
应用程序中启动 JUnit 测试。
我能够从命令行 运行 毫无问题地执行相同的命令。从 ProcessBuilder 中 运行ning 时我需要使用 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
您可以在 运行 您的应用程序中找到类路径,方法是使用
System.getProperty("java.class.path");
然后,相应地修改 ProcessBuilder()
语句中的 "cp"。
设置您要使用的 ProcessBuilder 的基本目录。
File libDir = new File("/opt/app/lib");
builder.directory(libDir);
这是我在@mazaneicha 评论重新查看应用程序的类路径目录后最终使用的解决方案。