处理如何使用java中的JSON执行shell命令
我无法在Java进程或ProcessBuilder
中使用JSON执行命令,
这里我包含了一个我执行的模型命令
ArrayList<String> outPut = new ArrayList<String>();
String sp = "test -n test -p '{\"test\": {\"test\": {\"test\": {\"test\": {\"test\": \"test\"}}}}}'";
Process process = Runtime.getRuntime().exec(sp);
System.out.println(sp);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream()));
String s = null;
while ((s = stdInput.readLine()) != null) {
outPut.add(s);
}
System.out.println(outPut);
# 1 楼答案
问题是 -它不考虑单引号^ {CD5}}。最后,它调用test时会出现以下情况(每行一个参数):
Runtime.exec(String)
使用StringTokenizer
分割参数,然后调用Runtime.exec(String[])
。 ^ {CD2}}不能分割该参数正确如前所述的解决方案:使用
Runtime.exec(String[])
,例如:我的测试程序:
非常简单,没有使用任何IDE,抱歉
我必须先调用java,所以我的
cmd
被改为cmd = { "java", "test", "-n", ...