0
enter code here

npun@nipun:~$ nutch crawl urls -dir crawl -depth 2 -topN 10
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/nutch/crawl/Crawl
Caused by: java.lang.ClassNotFoundException: org.apache.nutch.crawl.Crawl
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: org.apache.nutch.crawl.Crawl.  Program will exit.

但是当我从终端运行 nutch 时,它显示

用法:nutch [-core] COMMAND
,其中 COMMAND 是其中之一:
为 Intranet 等爬取一步爬虫
等.....

请告诉我该怎么办

嘿 Tejasp 我做了你告诉我的,我改变了 NUTCH_HOME=/nutch/runtime/local/bin 也有 crawl.java 文件但是当我这样做的时候

 npun@nipun:~$ nutch crawl urls -dir crawl -depth 2 -topN 10
 [Fatal Error] nutch-site.xml:6:6: The processing instruction target matching "[xX]           [mM][lL]" is not allowed.
 Exception in thread "main" java.lang.RuntimeException: org.xml.sax.SAXParseException:     The processing instruction target matching "[xX][mM][lL]" is not allowed.
    at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:1168)
at org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:1040)
at org.apache.hadoop.conf.Configuration.getProps(Configuration.java:980)
at org.apache.hadoop.conf.Configuration.set(Configuration.java:405)
at org.apache.hadoop.conf.Configuration.setBoolean(Configuration.java:585)
at org.apache.hadoop.util.GenericOptionsParser.processGeneralOptions(GenericOptionsParser.java:290)
at org.apache.hadoop.util.GenericOptionsParser.parseGeneralOptions(GenericOptionsParser.java:375)
at org.apache.hadoop.util.GenericOptionsParser.<init>(GenericOptionsParser.java:153)
at org.apache.hadoop.util.GenericOptionsParser.<init>(GenericOptionsParser.java:138)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:59)
at org.apache.nutch.crawl.Crawl.main(Crawl.java:55)
    Caused by: org.xml.sax.SAXParseException: The processing instruction target matching "[xX][mM][lL]" is not allowed.
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:180)
at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:1079)
... 10 more

它向我展示了这个结果现在是什么......?

我还检查了 nutch-site.xml 文件,我在其中进行了以下编辑

 <configuration>
 <property>
 <name>http.agent.name</name>
 <value>PARAM_TEST</value><!-- Your crawler name here -->
 </property>
 </configuration> 

先生,我照你说的做了,这次我用 'ant clean runtime' 编译了 nutch,nutch home 是

    NUTCH_HOME=/nutch/runtime/deploy/bin

    NUTCH_CONF_DIR=/nutch/runtime/local/conf

现在当我运行相同的命令时,它给了我这个错误

  npun@nipun:~$ nutch crawl urls -dir crawl -depth 2 -topN 10
  Can't find Hadoop executable. Add HADOOP_HOME/bin to the path or run in local mode.

我只想为我的最后一年项目创建一个可以从某些网站搜索某些东西的搜索引擎....

4

2 回答 2

3

似乎在 Nutch 版本 2.x 中,Crawl 类的名称已更改为 Crawler。我正在使用 Hadoop 运行 Nutch,所以我使用以下命令进行爬取:

hadoop jar apache-nutch-2.2.1.job org.apache.nutch.crawl.Crawler urls -solr http://<ip>:8983 -depth 2

如果您单独使用 Nutch 进行爬网,则 nutch 脚本应引用新的类名。

于 2013-07-07T09:31:16.373 回答
1

但是当我从终端运行 nutch 时,它显示

这将验证NUTCH_HOME/bin/nutch脚本是否存在于正确的位置。

请导出NUTCH_HOMENUTCH_CONF_DIR

您要使用哪种模式的 nutch ?

  1. 本地模式:作业在没有 hadoop 的情况下运行。你需要在 NUTCH_HOME/lib 中有 nutch jar。它以您使用的版本命名。例如。对于 nutch 版本 1.3,jar 名称是 nutch-1.3.jar。
  2. hadoop 模式:作业在 hadoop 集群上运行。您需要在 NUTCH_HOME 中有 nutch 作业文件。它以发布版本命名,例如。nutch-1.3.job

如果您碰巧有这些文件(对应于模式),则提取这些文件并查看其中是否确实存在 Crawl.class 文件。

如果 Crawl.class 文件不存在,则通过编译 nutch 源获取新的 jar/job 文件。

编辑:

  1. 不要使用ant jar. 改为使用ant clean runtime。输出在NUTCH_INSTALLATION_DIR/runtime/local目录内生成。从那里运行 nutch。那将是你的NUTCH_HOME
  2. JAVA_HOME, NUTCH_HOME and NUTCH_CONF_DIR在运行之前导出所需的变量。
  3. 我感觉 Crawl.class 文件不存在于 jar 中。请提取罐子并检查一下。仅供参考:提取 jar 文件的命令是jar -xvf <filename>
  4. 如果在#2 之后,您看到 jar 中不存在该类文件,则查看您下载的 nutch 源代码是否具有 java 文件。IE。nutch-1.x\src\java\org\apache\nutch\crawl\Crawl.java如果不存在,请从互联网上获取并重建 nutch jar。
  5. 如果在#2 之后,jar 文件有类文件并且您再次看到问题,那么环境有问题。尝试其他一些命令,例如inject。在 hadoop.log 文件中查找一些错误。让我知道你看到了什么。
于 2012-04-22T11:35:42.970 回答