有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java python子进程调用ubuntu 14.04

我试图在ubuntu 14.04(http://alt.qcri.org/tools/discourse-parser/)中运行alt话语解析器树

所有内容都已成功编译,但在运行时显示以下错误

File "/usr/lib/python2.7/subprocess.py", line 540, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['java', '-classpath', 'Tools/grmm/class:Tools/grmm/lib/mallet-deps.jar:Tools/grmm/lib/grmm-deps.jar', 'edu.umass.cs.mallet.grmm.learning.AcrfForTestJoty', '--testing', 'tmp_sen.feat', '--model-file', 'dcrf.sen.gz']' returned non-zero exit status 1

我只想知道这个错误的含义,以及错误中显示的命令和参数。所有必要的jar文件都存在于各自的位置


共 (1) 个答案

  1. # 1 楼答案

    正如@MarkB在他的评论中提到的,这实际上不是一条Python错误消息,而是Python简单地解释了它运行什么命令来执行Java程序,以及它的返回值,以及在执行过程中出现了一些错误

    此消息显示Java程序返回的值为1。通常,程序以非零状态退出意味着出现了问题。您需要查找此应用程序的值1的含义(如果有)

    要逐条解释错误消息,请执行以下操作:

    File "/usr/lib/python2.7/subprocess.py", line 540, in check_call raise CalledProcessError(retcode, cmd) subprocess.

    Python运行了进程“subprocess”,在第540行抛出了一个错误(这与此无关,因为它只是Python内部的东西)。这是被调用的Java进程抛出的错误,不是内部Python的东西

    CalledProcessError: Command '['java', '-classpath', 'Tools/grmm/class:Tools/grmm/lib/mallet-deps.jar:Tools/grmm/lib/grmm-deps.jar', 'edu.umass.cs.mallet.grmm.learning.AcrfForTestJoty', ' testing', 'tmp_sen.feat', ' model-file', 'dcrf.sen.gz']

    抛出的错误类型为CalledProcessError,这意味着被调用的进程没有返回零,它向您显示了用于启动外部[Java]应用程序的命令。命令只是java,选项&;参数如下(按顺序)

    • '-classpath', 'Tools/grmm/class:Tools/grmm/lib/mallet-deps.jar:Tools/grmm/lib/grmm-deps.jar'使用以冒号(:)分隔的3条路径覆盖此JVM会话的默认classpath环境变量
    • edu.umass.cs.mallet.grmm.learning.AcrfForTestJoty这是包含main方法并将被调用的类
    • testing, 'tmp_sen.feat'是传递给Java程序中main方法的自定义参数
    • ' model-file', 'dcrf.sen.gz'是传递给Java程序中main方法的另一个自定义参数

    最后,这一行

    returned non-zero exit status 1

    是Java程序的返回值。这给了您一个提示,它没有以0(成功)退出,而是遇到了某种错误代码为1的问题。如果Java程序以不同的错误代码退出,这可能意味着什么,也可能仅仅意味着它以一般问题退出,但它可能是任何东西

    长话短说:您需要确保将正确的值传递给Java程序。如果这是您自己的Java程序,那么我建议您调试它。如果没有,您应该使用相同的参数直接运行它(不使用Python): testing tmp_sen.feat& model-file dcrf.sen.gz以了解这些参数本身是否是问题所在。希望通过这种方式,您可以更清楚地了解Java程序中的错误