打jar包的思路,參照上一篇資料《Eclipse將引用了第三方jar包的Java項目打包成jar文件的兩種方法》html
之因此再作筆記是由於:我在打好jar包後,在Linux下運行
java
[root@nutch-five test]# java -jar crawl-test.jar apache
報錯信息爲:windows
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/util/Tooloop
意思就是說:咱們的第三方jar包並未起做用spa
最開始,一直覺得是打包的方法有誤。翻來覆去折騰了好幾個小時。最終老大提了另外一種思路,他以爲用ant打包可能會容易一些。可是,在網上找了些資料看了一下,發現挺麻煩的。最終沒有作這種方法。.net
繼續查錯,我也懷疑過是否是hadoop jar包的問題,我認爲多是hadoop-core.jar下的META-INF文件下內容程序找不到。事實上,也不是這個緣由,上邊的想法都只是猜想而已。hadoop-core.jar的結構和其餘第三方jar包的結構徹底一致。code
沒辦法,最後不知道怎麼腦殼一抽~纔想到怎麼不在windows下的dos中測一下。這一次,發現打的jar包是能夠運行的。htm
到了這兒,老大問我,爲何在Linux下不行,在Windows下能夠?其實,當時一高興,我也沒思考過這個問題:所打的jar包,爲何在windows下能夠運行成功,可是在Linux下卻不能夠。blog
老大提了思路,他說:會不會是,路徑的問題。由於windows下的路徑分隔符和Linux下的路徑分隔符有區別。我恍然~~這種可能性很是大!!!
我每次對於windows和Linux的路徑、轉義字符等一系列的區別老是傻傻分不清楚。雖然知道它們有區別,可是每次都記不住。致使,每次在遇到這些問題時,都會浪費大量的時間作無用功~~~~
此次的感觸是:
一、要堅持,有時候但願就在你絕望到將要放棄的時候出現。
二、思惟要活躍,想問題不要侷限在很小的框子內,天馬行空最好。有時候,看似不相關的兩個事情,當你換一種思路來看時,它正好能解決你的問題。
三、要不斷地回顧。回顧以前的想法,回顧以前的作法,看看本身疏忽了哪些關鍵點。有時候思路和方向都沒有錯,錯就錯在細節上。可本身還糾結的認爲,或許思路和方向都錯得太遠了。
四、遇到問題了,不能僅僅是解決問題,並且要知道爲何。想明白,而後下次注意。
結合前輩們的相關資料:
下面列出詳細的打包過程:
一、在咱們所須要打包的項目下新建文件夾META-INF。個人項目名稱爲nutch源代碼的項目名稱branch-1.7
二、在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