windows ProcessBuilder未正确执行Java类文件
在一个java文件中,我调用命令行语句来执行另一个java文件。这就是我正在做的:
List<String> paramsExecute = new ArrayList<String>();
paramsExecute.add("java");
paramsExecute.add("-cp");
paramsExecute.add("input\programs\User_K Program1");
paramsExecute.add("1 2 3");
ProcessBuilder builderExecute = new ProcessBuilder(paramsExecute);
builderExecute.redirectOutput(new File(a.txt));
builderExecute.redirectError(new File(b.txt));
其中一个Java文件的执行会产生b.txt,如下所示:
Error: Could not find or load main class 1 2 3
另一个java文件正在生成b.txt,如下所示:
Usage: java [-options] class [args...] ...
但是,当我直接从命令行运行这些语句时,它的执行是正确的。文件夹input\programs\
与src
文件夹位于同一路径中。src
文件夹包含包含ProcessBuilder程序的Java文件。我已经证实。类文件被正确地创建在正确的文件夹中。我正在windows中运行这个程序
感谢您的帮助
# 1 楼答案
应该在“-cp”后面指定类路径,如
代码中的“input\programs\User_K Program1”被视为类路径信息,而不是要运行的类,因为它跟在“-cp”后面,“1 2 3”是类名,而不是传递给主方法的参数
从scatch中检索类路径并不容易
如果要使用位于示例src文件夹中的类创建进程,最好使用
System.getProperty("java.class.path");
继承类路径,或者手动键入路径信息# 2 楼答案
这个
paramsExecute.add("input\programs\User_K Program1");
被视为单个命令/参数,表示类路径应该等于input\programs\User_K Program1
我想你应该用更像