依賴第三方jar包的java項目打包方式(命令列執行依賴第三方jar包的java程式)__jar打包

來源:互聯網
上載者:User

實際中遇到問題:寫了個server和client的通訊程式(依賴第三方jar包),控制台執行server或client總報錯java.lang.NoClassDefFoundError,而類又不是自己定義的,糾結一番發現是打包錯誤,未找到第三方jar包,解決方案如下:


方案零:用Eclipse內建的Export功能,匯出Runnable jar包,java安裝正確的話雙擊就可運行,或控制台使用java命令運行,最簡單方便的一種方式,自測可行


方案一:用Eclipse內建的Export功能

步驟1:準備主資訊清單檔 “MANIFEST.MF”,

由於是打包引用了第三方jar包的Java項目,故需要自訂設定檔MANIFEST.MF,在該項目下建立檔案MANIFEST.MF,內容如下:

Manifest-Version: 1.0Class-Path: lib/protobuf-jar-2.4.1.jar
Main-Class: com.bonree.base.HelloWorldServer

第一行是MANIFEST的版本,第二行Class-Path就指定了外來jar包的位置,第三行指定我們要執行的MAIN java檔案。

這裡要注意幾點:

1、Class-Path: 和Main-Class: 後邊都有一個空格,必須加上,否則會打包失敗,錯誤提示為:Invalid header field;多個jar包空格分開2、假設我們的項目打包後為HelloWorldServer.jar,那麼按照上面的定義,應該在 HelloWorldServer.jar的同層目錄下建立一個lib檔案夾(即lib檔案和打包的jar檔案
在同一個目錄下),並將相關的jar包放在裡面。否則將會出現“Exception in thread "main" java.lang.NoClassDefFoundError”的錯誤;3、Main-Class後面是類的全地址,比如你的主檔案是HelloWorldServer.java,檔案裡打包為package com.bonree.base; 那麼這裡就寫com.bonree.base.HelloWorldServer,
不要加.java尾碼,主檔案地址寫錯將會出現“找不到或無法載入主類”的錯誤;4、寫完Main-Class後一定要斷行符號(即最後一行是空白行),讓游標到下一行,這樣你產生的jar包才能找到你的主class去運行,否則將會出現“jar中沒有主清單屬性”的錯誤。

 

步驟2:右擊Java工程選擇Export—>選擇JAR file—>Next

 

步驟3:選擇要打包的檔案,不需要的檔案不必打包,減小打包後的jar檔案大小,並進行選項配置如下

這裡有幾個選項:

* Export generated class files and resources 表示只匯出產生的.class檔案和其他資源檔* Export all output folders for checked projects 表示匯出選中項目的所有檔案夾* Export java source file and resouces 表示匯出的jar包中將包含你的原始碼*.java,如果你不想泄漏原始碼,那麼就不要選這項了* Export refactorings for checked projects 把一些重構的資訊檔也包含進去

 

步驟4:選擇我們在第一步中自訂的設定檔路徑,這一步很重要,不能採用預設選項

 

這裡解釋一下配置項:

* Generate the manifest file:是系統幫我們自動產生MANIFEST.MF檔案,如果你的項目沒有引用其他class-path,那可以選擇這一項。* Use existing mainfest from workspace:這是可以選擇我們自訂的.MF檔案,格式如上所寫,引用了第三方包時選用。* Seal content:要封裝整個jar或者指定的包packet。* Main class:這裡可以選擇你的程式入口,將來打包出來的jar就是你這個入口類的執行結果。

 

最後Finish,即產生了我們要的jar檔案。

 

運行該jar檔案有兩種方式:

1. 在命令列下運行命令java -jar 你的jar檔案名稱,比如我的執行如下:

如果在jar中有一些System.out.prinln語句(如上執行結果),運行後不想在控制台輸出而是儲存在檔案中方便以後查看,可以用一下命令:
java -jar HelloWorldServer.jar > log.txt (這時命令列視窗不會有任何輸出)
輸出資訊會被列印到log.txt中,當然log.txt自動產生,並位於和HelloWorldServer.jar一個目錄中。

相應eclipse中client端輸出如下:

2. 建立一個批次檔,如start.bat,內容為:java -jar HelloWorldServer.jar,放在jar檔案同一目錄下即可,以後點擊自動運行即可,更加方便。

 

方案二:安裝Eclipse打包外掛程式Fat Jar

     方案一對於含有較多第三方jar檔案或含有第三方圖片資源等就顯得不合適,太繁瑣。這時可以使用一個打包的外掛程式—Fat Jar。

     Fat Jar Eclipse Plug-In是一個可以將Eclipse Java Project的所有資源打包進一個可執行jar檔案的小工具,可以方便的完成各種打包任務,我們經常會來打jar包,但是eclipse內建的打包jar似乎不太夠用,Fat Jar是eclipse的一個外掛程式,特別是Fat Jar可以打成可執行Jar包,並且在圖片等其他資源、引用外包方面使用起來更方便。


安裝方法:

1. Eclipse線上更新方法
Help > Install New Software > Add,
name:Fat Jar
location:http://kurucz-grafika.de/fatjar

2. Eclipse外掛程式手動安裝方法
下載地址:http://downloads.sourceforge.net/fjep/net.sf.fjep.fatjar_0.0.27.zip?modtime=1195824818&big_mirror=0
將解壓出的plugins中的檔案複製到eclipse安裝目錄中的plugins目錄下,然後重啟eclipse即可。

使用方法:

步驟1:右擊工程項目選擇Buile Fat Jar

 

步驟2:配置jar檔案存放目錄,主Main檔案等

 

步驟3:選擇所要用到的第三方jar包

 

最後Finish,即產生了我們要的jar檔案,十分方便。


原文地址:http://www.cnblogs.com/lanxuezaipiao/p/3291641.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.