共计 1497 个字符,预计需要花费 4 分钟才能阅读完成。
行业资讯
服务器
云计算
如何将 nutch 源代码进行修改后将项目和第三方 jar 包打成一个整体 ar 包
丸趣 TV 小编给大家分享一下如何将 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 包”有了一定的了解,如果想了解更多相关知识,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!