Windows 7上Cygwin上的Nutch 1.12 - NullPointerException

时间:2016-10-29 18:29:56

标签: nullpointerexception cygwin nutch

我正在努力让nutch第一次运行工作项目。目前,计划是从一台机器(Windows 7)运行nutch,以便从十几个网站上搜索上下文。以下是cygwin的命令行输出。

$ bin/nutch inject crawl/crawldb urls
Injector: starting at 2016-10-29 09:16:37
Injector: crawlDb: crawl/crawldb
Injector: urlDir: urls
Injector: Converting injected urls to crawl db entries.
Injector: java.lang.NullPointerException
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1012)
        at org.apache.hadoop.util.Shell.runCommand(Shell.java:445)
        at org.apache.hadoop.util.Shell.run(Shell.java:418)
        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:650)
        at org.apache.hadoop.util.Shell.execCommand(Shell.java:739)
        at org.apache.hadoop.util.Shell.execCommand(Shell.java:722)
        at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:633)
        at org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:467)
        at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:456)
        at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:424)
        at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:906)
        at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:887)
        at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:849)
        at org.apache.hadoop.fs.FileSystem.createNewFile(FileSystem.java:1149)
        at org.apache.nutch.util.LockUtil.createLockFile(LockUtil.java:58)
        at org.apache.nutch.crawl.Injector.inject(Injector.java:357)
        at org.apache.nutch.crawl.Injector.run(Injector.java:467)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
        at org.apache.nutch.crawl.Injector.main(Injector.java:441)

查看源代码,这里是org.apache.nutch.crawl.Injector的第440行至第443行:

  public static void main(String[] args) throws Exception {
    int res = ToolRunner.run(NutchConfiguration.create(), new Injector(), args);
    System.exit(res);
  }

目前尚不清楚它是否是NutchConfiguration.create()或新的Injector()失败。我从nutch网站上的教程设置我的安装。我在文件中添加了3个网址列表,每行1个./urls/seed.txt;并编辑./conf/nutch-site.xml。

任何有关调查/调试的建议都将受到赞赏。 谢谢!

2 个答案:

答案 0 :(得分:0)

好吧,在这里有些挣扎之后,是让hadoop与cygwin / windows一起工作的最后步骤。

  1. 根据hadoop版本从https://github.com/cdarlint/winutils的文件夹bin下下载正确版本的winutils.exe和hadoop.dll。

  2. 将HADOOP_HOME设置为上述bin文件夹的下载目录。 (请注意,如果以上两个文件是从目录D:\ winutil \ bin下载的,则HADOOP_HOME = D:\ winutil)

  3. 确保将D:\ winutil \ bin添加到Windows的PATH变量中。此步骤现在很重要(已经很久了)。

答案 1 :(得分:-1)

我有同样的问题。通过在计算机上设置Hadoop来解决此问题,并将winutils.exe包含在%HADOOP%/bin中。

然后将得到java.lang.UnsatisfiedLinkError error。要解决此问题,请在%NUTCH_HOME%/runtime/local/bin中打开nutch文件,然后在行下方注释

if [ "x$JAVA_LIBRARY_PATH" != "x" ]; then
  NUTCH_OPTS=("${NUTCH_OPTS[@]}" -Djava.library.path="$JAVA_LIBRARY_PATH")
fi