Не удалось найти или загрузить основной класс org. apache .nutch.tools.FileDumper - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь выполнить команду Apache Nutch из функции Python, работающую на Windows и Cygwin через модуль subprocess. Однако, несмотря на то, что я могу найти Nutch, я не могу выполнить команду 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'

Чего мне точно не хватает? Выполнение команды dump от собственно Cygwin (в отличие от Python) работает точно так, как задумано.

1 Ответ

0 голосов
/ 03 мая 2020

Оказывается, это было проще, чем я думал. У меня просто не было папки Cygwin64 в PATH, но кроме этого мне также пришлось указать полный путь к сегментам и каталогам вывода

Этот код работал для меня:

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)
...