在终端中运行此命令可以正常工作:
java -jar file.jar --arg1 --arg2 pathTofile
当我尝试使用以下代码从python代码执行此操作时:
subprocess.call(['java', '-jar', 'file.jar', '--arg1' , '--arg2' , 'pathTofile'])
我得到了--arg1的IllegalArugmentException。
关于为什么会产生问题的任何想法?
答案 0 :(得分:1)
@Benst - 我遇到了同样的问题,这对我有用:
subprocess.call([' java',' -Dparam1 = paramValue1',' -Dparam2 = paramValue2',' -jar' ,' filename.jar']);
干杯!
答案 1 :(得分:0)
好的,我把它弄清楚了。 在python中使用子进程例程时,需要单独引用选项和并发值
例如:
subprocess.call(['java', '-jar', 'file.jar', '-option', 'valueForThisOption', '-option', 'valueForThisOption', 'pathToFile'])
将-option和value放在一个引号中会产生此错误。 我已经读过某个地方,如果你把shell = True放在最后,你只能将-option和value放在一个引号中。 (另)