小编给大家分享一下如何将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、遇到问题了,不能仅仅是解决问题,而且要知道为什么。想明白,然后下次注意。
结合前辈们的相关资料:
简单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包”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。