Java Can';t运行ProcessBuilder
我正在和ProcessBuilder的人斗争!我想在中运行实用程序“nativetoascii”。我可以在命令行上运行它,也可以通过Runtime.exec()运行,没有问题 我的代码是:Java Can';t运行ProcessBuilder,java,processbuilder,Java,Processbuilder,我正在和ProcessBuilder的人斗争!我想在中运行实用程序“nativetoascii”。我可以在命令行上运行它,也可以通过Runtime.exec()运行,没有问题 我的代码是: ' String command = "\"C:\\Program Files (x86)\\Java\\jdk1.6.0_32\\bin\\native2ascii\""; String encoding = " -encoding "; String utf8 = "UTF8 ";
'
String command = "\"C:\\Program Files (x86)\\Java\\jdk1.6.0_32\\bin\\native2ascii\"";
String encoding = " -encoding ";
String utf8 = "UTF8 ";
String inputFile = "C:\\Users\\joe\\Desktop\\resources\\encoding\\orig.properties ";
String outputFile ="C:\\Users\\joe\\Desktop\\resources\\encoding\\convertedViaProcessBuilder.properties";
List<String> commandArgs = new ArrayList<String>();
commandArgs.add(command);
commandArgs.add(encoding);
commandArgs.add(utf8);
commandArgs.add(inputFile);
commandArgs.add(outputFile);
ProcessBuilder builder = new ProcessBuilder(commandArgs);
Process p = builder.start();
p.waitFor();
很明显,我对命令及其参数做了一些错误的处理。谁能告诉我我做错了什么?谢谢。您的第二个参数是
“-encoding”
它应该是“-encoding”
当您运行命令时,空格很重要。;) 您是否尝试过在命令参数周围不使用空格。因为参数已经被“解析”了,所以我认为不应该有空格。同样,你也不需要在命令名周围加引号-在命令行上,你需要它们告诉命令行解析器它是一个名称,即使它包含空格,但是有了ProcessBuilder,你可以把参数作为一个列表来传递,这样就不需要解析器了。这就解决了问题,我真不敢相信我被这么基本的东西难住了!谢谢大家。@user1412992很容易忽略空格,因为空格并不存在
Usage: native2ascii [-reverse] [-encoding encoding] [inputfile [outputfile]]