python 子进程调用 ubuntu 14.04
python subprocess call ubuntu 14.04
我正在尝试 运行 在 ubuntu 14.04 (http://alt.qcri.org/tools/discourse-parser/)
中替换话语解析器树
一切都编译成功,但在运行期间显示以下错误。
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 文件都存在于它们各自的位置。
正如@MarkB 在他的评论中提到的,这并不是真正的 Python 错误消息,而是 Python 简单地解释它 运行 执行什么命令 Java 程序及其 return 值,并且在执行过程中出现了错误。
此消息显示 Java 程序 returned 的值为 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,这意味着调用的进程没有 return 零,它向您显示用于启动外部 [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
这是 class 包含一个 main 方法,将被调用
--testing, 'tmp_sen.feat'
是传递给 Java 程序中的 main 方法的自定义参数
'--model-file', 'dcrf.sen.gz'
是 Java 程序 中传递给 main 方法的另一个自定义参数
最后,这一行
returned non-zero exit status 1
是Java程序的return值。它提醒您它没有以 0(成功)退出,而是遇到了错误代码 1 的某种问题。如果 Java 程序以不同的错误代码退出,这可能意味着什么,或者这可能只是意味着它因一般性问题而退出,但它可能是任何问题。
长话短说:您需要确保将正确的值传递给 Java 程序。如果这是您自己的 Java 程序,那么我建议对其进行调试。如果不是,您应该直接 运行 它(不带 Python)并使用相同的参数:--testing tmp_sen.feat
& --model-file dcrf.sen.gz
以查明这些参数本身是否是问题所在。希望通过这种方式,您可以更清楚地了解 Java 程序中出现的问题。
我正在尝试 运行 在 ubuntu 14.04 (http://alt.qcri.org/tools/discourse-parser/)
中替换话语解析器树一切都编译成功,但在运行期间显示以下错误。
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 文件都存在于它们各自的位置。
正如@MarkB 在他的评论中提到的,这并不是真正的 Python 错误消息,而是 Python 简单地解释它 运行 执行什么命令 Java 程序及其 return 值,并且在执行过程中出现了错误。
此消息显示 Java 程序 returned 的值为 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,这意味着调用的进程没有 return 零,它向您显示用于启动外部 [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
这是 class 包含一个 main 方法,将被调用--testing, 'tmp_sen.feat'
是传递给 Java 程序中的 main 方法的自定义参数'--model-file', 'dcrf.sen.gz'
是 Java 程序 中传递给 main 方法的另一个自定义参数
最后,这一行
returned non-zero exit status 1
是Java程序的return值。它提醒您它没有以 0(成功)退出,而是遇到了错误代码 1 的某种问题。如果 Java 程序以不同的错误代码退出,这可能意味着什么,或者这可能只是意味着它因一般性问题而退出,但它可能是任何问题。
长话短说:您需要确保将正确的值传递给 Java 程序。如果这是您自己的 Java 程序,那么我建议对其进行调试。如果不是,您应该直接 运行 它(不带 Python)并使用相同的参数:--testing tmp_sen.feat
& --model-file dcrf.sen.gz
以查明这些参数本身是否是问题所在。希望通过这种方式,您可以更清楚地了解 Java 程序中出现的问题。