我正在尝试在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程序中出现的问题得到更清楚的错误。