无法找到或加载主类org.apache.nutch.tools.FileDumper

问题描述 投票:0回答:1

我正在尝试通过subprocess模块从Python函数发出Apache Nutch命令,该函数在Windows和Cygwin上运行。但是,虽然可以找到适当的提示,但似乎无法对其执行Dump命令。

这是我的代码的摘录:

from subprocess import Popen, PIPE
p = Popen(["c:/cygwin64/bin/bash.exe", '-c', 'C:/Users/.../nutch/runtime/local/bin/nutch dump -segment test/segments -outputDir outputDir -flatdir -mimetype audio/mpeg'], stdout=PIPE, stderr=STDOUT)
print(p.communicate()[0])

但是,运行它会返回以下内容:

b'c:/Users/.../nutch/runtime/local/bin/nutch: line 38: uname: command not found\nC:/Users/.../nutch/runtime/local/bin/nutch: line 110: dirname: command not found\nError: Could not find or load main class org.apache.nutch.tools.FileDumper\nCaused by: java.lang.ClassNotFoundException: org.apache.nutch.tools.FileDumper\r\n'

我到底想念什么?从Cygwin正常运行dump命令(与Python相反),它完全可以按预期运行。

python subprocess cygwin nutch
1个回答
0
投票

事实证明,这比我想象的要简单。我只是在PATH中没有Cygwin64的文件夹,但除此之外,我还必须指定段和输出目录的完整路径

此代码对我有用:

p = Popen(["c:/cygwin64/bin/bash.exe", '-c', '$NUTCH_HOME/bin/nutch dump -segment $NUTCH_HOME/test/segments -outputDir $NUTCH_HOME/outputDir -flatdir -mimetype audio/mpeg'], stdout=PIPE, stderr=STDOUT)
© www.soinside.com 2019 - 2024. All rights reserved.