读书人

nutch 发布时要注意的有关问题

发布时间: 2012-07-25 09:43:05 作者: rapoo

nutch 发布时要注意的问题

在利用Nutch自身的ant打包后,如果对整个项目不太清楚结构,往往出现很多奇怪的问题。这里就是遇到了。。。

?

*打job后,留在该项目中进行测试时,出现:

org.apache.nutch.plugin.PluginRuntimeException: java.lang.ClassNotFoundException: org.apache.nutch.net.urlnormalizer.basic.BasicURLNormalizer

此情况一般是在nutch-site.xml中plugin.folders还是保留在IDE的配置,比如写成绝对路径。

 由于bin/nutch配置是conf下的配置优先于job里的(nutch文件是将conf先添加到classpath的,所以优先),所以job中的没有起到作用。

cause?

?

*异常:

java.lang.NullPointerException
??????? at org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:126)

?

同样也是由plugin.folders配置不当引起的。

由于默认情况下,nutch下的plugin没有分词插件(当然plugin.includes也不会出现该插件名称),所以如果你后来在includes下添加了analysis-zh时(folder还是默认的plugins),当进行中文搜索/索引时就会出现这个异常。开始觉得很奇怪,因为原本在IDE是正常的,但在外面跑的时候就有问题,找了很久,教训很深刻。

从nutch文件分析知道,它会把build/plugins添加到classpath中,再结合PluginManifestParser#getPloginFolder(),如果此目录在classpath中并且它是一个相对目录时,会直接返回它;另外在打job包时,并不会将编译的新plugins目录覆盖原plugins,所以如果使用默认的值便出现此异常。

 后来我将它设置为build/plugins便可以正常动作。

 当然了,如果在产品环境下,并不存在build目录,同时如果删除plugins目录的话就可以利用job中的了,运行就没问题。

?

总之,分析问题时应该从流程上着手,找代码查原因。

?

?

读书人网 >开源软件

热点推荐