千家信息网

如何将nutch源代码进行修改后将项目和第三方jar包打成一个整体ar包

发表于:2024-11-25 作者:千家信息网编辑
千家信息网最后更新 2024年11月25日,小编给大家分享一下如何将nutch源代码进行修改后将项目和第三方jar包打成一个整体ar包,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!我在打好jar包后,在Linux下运行[roo
千家信息网最后更新 2024年11月25日如何将nutch源代码进行修改后将项目和第三方jar包打成一个整体ar包

小编给大家分享一下如何将nutch源代码进行修改后将项目和第三方jar包打成一个整体ar包,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

我在打好jar包后,在Linux下运行

[root@nutch-five test]# java -jar crawl-test.jar

报错信息为:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/util/Tool

意思就是说:我们的第三方jar包并未起作用

最开始,一直以为是打包的方法有误。翻来覆去折腾了好几个小时。最终老大提了另一种思路,他觉得用ant打包可能会容易一些。但是,在网上找了些资料看了一下,发现挺麻烦的。最终没有做这种方法。

继续查错,我也怀疑过是不是hadoop jar包的问题,我认为可能是hadoop-core.jar下的META-INF文件下内容程序找不到。事实上,也不是这个原因,上边的想法都只是猜测而已。hadoop-core.jar的结构和其他第三方jar包的结构完全一致。

没办法,最后不知道怎么脑袋一抽~才想到怎么不在windows下的dos中测一下。这一次,发现打的jar包是可以运行的。

到了这儿,老大问我,为什么在Linux下不行,在Windows下可以?其实,当时一高兴,我也没思考过这个问题:所打的jar包,为什么在windows下可以运行成功,但是在Linux下却不可以。

老大提了思路,他说:会不会是,路径的问题。因为windows下的路径分隔符和Linux下的路径分隔符有区别。我恍然~~这种可能性非常大!!!

我每次对于windows和Linux的路径、转义字符等一系列的区别总是傻傻分不清楚。虽然知道它们有区别,但是每次都记不住。导致,每次在遇到这些问题时,都会浪费大量的时间做无用功~~~~

这次的感触是:

1、要坚持,有时候希望就在你绝望到将要放弃的时候出现。

2、思维要活跃,想问题不要局限在很小的框子内,天马行空最好。有时候,看似不相关的两个事情,当你换一种思路来看时,它正好能解决你的问题。

3、要不断地回顾。回顾之前的想法,回顾之前的做法,看看自己疏忽了哪些关键点。有时候思路和方向都没有错,错就错在细节上。可自己还纠结的认为,或许思路和方向都错得太远了。

4、遇到问题了,不能仅仅是解决问题,而且要知道为什么。想明白,然后下次注意。

结合前辈们的相关资料:

多项目相互依赖的Java程序打包并引入外部Jar包方式

Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法

简单jar打包示例 合并第三方jar包打包操作

下面列出详细的打包过程:

1、在我们所需要打包的项目下新建文件夹META-INF。我的项目名称为nutch源代码的项目名称branch-1.7

2、在META-INF下新建文件MANIFEST.MF。文件内容类似:

Manifest-Version: 1.0 Main-Class: com.pacong.convert.auto.propertes.ConvertAutoProperties Class-Path: lib/xxx.jar lib/yyy.jar lib/zzz.jar

看完了这篇文章,相信你对"如何将nutch源代码进行修改后将项目和第三方jar包打成一个整体ar包"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

0