nutch 发布时要注意的问题

18 篇文章 0 订阅
16 篇文章 0 订阅

在利用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中的了,运行就没问题。

 

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值