我正在尝试在Ubuntu 14.04(http://alt.qcri.org/tools/discourse-parser/)中运行alt语篇解析器树

一切编译成功,但是在运行时显示以下错误。


  在check_call中的文件“ /usr/lib/python2.7/subprocess.py”,第540行
      提高CalledProcessError(retcode,cmd)
  subprocess.CalledProcessError:命令'['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']'返回非零退出状态1


我只想知道此错误的含义,以及该错误中显示的命令和参数。所有必需的jar文件都位于它们各自的位置。

最佳答案

就像@MarkB在他的评论中提到的那样,这实际上不是Python错误消息,而是Python只是在解释它运行什么命令来执行Java程序及其返回值,并且在执行过程中出了点问题。

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

逐步解释错误消息:


  在check_call中的文件“ /usr/lib/python2.7/subprocess.py”第540行,引发CalledProcessError(retcode,cmd)子进程。


Python运行了进程“子进程”,并在第540行抛出了一个错误(这无关紧要,因为它只是内部Python东西)。这是被调用的Java进程抛出的错误,而不是内部Python引发的错误。


  CalledProcessError:命令'['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这是一个包含主要方法的类,将被调用
--testing, 'tmp_sen.feat'是传递给Java程序中main方法的自定义参数
'--model-file', 'dcrf.sen.gz'是传递给Java程序中main方法的另一个自定义参数


最后,这条线


  返回非零退出状态1


是Java程序的返回值。提示您它没有以0(成功)退出,而是遇到了错误代码为1的某种问题。这可能意味着如果Java程序以不同的错误代码退出,或者只是它退出时出现了一般性问题,但可能是任何事情。

长话短说:您需要确保将正确的值传递给Java程序。如果这是您自己的Java程序,则建议您调试它。如果不是,则应使用相同的参数直接运行(不使用Python):--testing tmp_sen.feat--model-file dcrf.sen.gz以确定这些参数本身是否是问题。希望通过这种方式,您将对Java程序中出现的问题得到更清楚的错误。

08-18 10:32