【问题标题】:python subprocess running jar gives errorpython子进程运行jar给出错误
【发布时间】:2012-10-08 20:54:40
【问题描述】:

在终端中运行此命令可以正常工作:

java -jar file.jar --arg1 --arg2 pathTofile

当我尝试使用以下代码从 python 代码中执行此操作时:

subprocess.call(['java', '-jar', 'file.jar', '--arg1' , '--arg2' , 'pathTofile'])

我得到了 --arg1 的 IllegalArugmentException。

关于为什么这会产生问题的任何想法?

【问题讨论】:

  • 可以修改或调试Java程序吗?
  • Linux 无法调试 Java 程序,java 可以正常工作
  • 问题中的代码很好。您的回答表明问题在于您将多个命令行参数放入单个列表项中。规则很简单:每个项目一个参数。

标签: java python jar subprocess


【解决方案1】:

@Benst - 我遇到了同样的问题,这对我有用:

subprocess.call(['java', '-Dparam1=paramValue1', '-Dparam2=paramValue2', '-jar', 'filename.jar']);

干杯!

【讨论】:

  • 对不起,但这不是解决方案。我有这个:['java', '-jar', 'pdfbox-app-1.8.8.jar', 'ExtractText', 'Content.pdf', 'Content.pdf.txt'] 并且不起作用。它给出了用法:java [-options] 类 [args...]。 ...
  • @alemol - 你的用法不正确,仔细查看语法...'-jar' 并且'filename.jar' 应该在代码的末尾...
  • 遵循正确的语法:subprocess.call(['java', 'ExtractText', 'somepdf.pdf', 'sometxt.txt', '-jar', 'pdfbox-app-1.8. 8.jar']) 给出:无法找到或加载主类 ExtractText。那么,如何在 python subprocess.call 中调用模块(使用此用法)?:java -jar pdfbox-app-x.y.z.jar ExtractText [OPTIONS] [Text file]
【解决方案2】:

好的,我想通了。 在 python 中使用 subprocess 例程时,您需要单独引用选项和并发值

例如:

subprocess.call(['java', '-jar', 'file.jar', '-option', 'valueForThisOption', '-option', 'valueForThisOption', 'pathToFile'])

将 -option 和 value 放在一个引号中会产生此错误。 我在某处读到,如果你把 shell=True 放在最后,你只能把 -option 和 value 放在一个引号中。 (未经测试)

【讨论】:

  • 根据被调用程序的不同,可以在一个参数中写入'--arg=itsParameter'
猜你喜欢
  • 2015-12-03
  • 2013-12-04
  • 1970-01-01
  • 2019-08-27
  • 1970-01-01
  • 1970-01-01
  • 2021-07-24
  • 2016-12-20
  • 1970-01-01
相关资源
最近更新 更多