Nutch中纠结我的classpath

最近在改写nutch的过程中遇到了多个classpath方面的问题,一时间暴露了我java基本功的缺乏,同时也暴露出了依赖eclipse所造成的恶果。下面将我遇到的问题总结出来,如果大家遇到了也可以尽快脱困。

(1)在nutch中本来存在的类,在eclipse运行时报错说找不到。

这个可能性还是比较大的。我当时的解决方法正如那篇在eclipse上编译nutch的文章,把工程项目设置成用ant编译,同时对每次编译运行“jar”工作。

(2)扩展nutch,编写了自己的类,但是在eclipse运行中报错说找不到类。

我遇到了的问题,也是很纠结。后来发现采用(1)中的解决方案,会将结果的nutch-1.0.jar生成在build的目录下,而在根目录上还有一个nutch-1.0.jar,系统在从它找不到响应类的情况下,可能会声称自己找不到类。

我当时的方法就是将它删除,然后将classpath设置为build目录下的那个jar。

(3)扩展了的类,打好包,放到Nutch的执行工程中,在shell下运行报错说找不到类。

这个问题经过分析,发现是因为nutch貌似没有将nutch-1.0.jar包含在内,我当时的简单解决方法就是把nutch-1.0.jar放在lib文件夹里面,这样在运行nutch.shell的时候,就会将Lib下的所有jar包作为classpath可搜寻的路径。

这样一来它又可以工作了。

(4)在原本类中进行修改,打好包,放到utch的执行工程中,在shell下运行发现修改没有效果。

在nutch的根目录下,有一个叫做Nutch-1.0.job,注意这个家伙。它其实是一个包含配置文件的jar包,简单的方法就是把它拿出工程中,这样就又可以运行了。

(5)在原本类中进行修改,在eclipse中运行发现修改没有效果。

这个原因比较纠结。在传统的编译过程中(class编译),eclipse会为我们建立一个bin目录,并把src的源文件生成的class文件按同样的结构放入bin中。然而在采用jar之前,我用传统的编译方法,导致系统中存在了这样的文件。而它不出现在工程视图中,我们无法直观地搜索到他。因此,可以从文件系统中将它删除,这样便能恢复正常了。


总结:

使用eclipse为我们管理工程是一件好事,但是如果不能理解其中错综复杂的classpath关系,可能会让我们栽大跟头。所以要多多学习实践这方面的知识,这些问题不易查找,不易在网上搜寻答案,编程多年的牛人有的也不一定能把这个搞清楚,所以这个也算是程序员的一个软实力!

猜你喜欢

转载自hsmyy198712.iteye.com/blog/786246
今日推荐