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