java打jar包,引用其他.jar檔案

來源:互聯網
上載者:User
java打jar包,引用其他.jar檔案 2009-06-01 14:39

大家都知道一個java應用項目可以打包成一個jar,當然你必須指定一個擁有main函數的main class作為你這個jar包的程式入口。

 

具體的方法是修改jar包內目錄META-INF下的MANIFEST.MF檔案。

 

比如有個叫做test.jar的jar包,裡面有一個擁有main函數的main class:test.someClassName

我們就只要在MANIFEST.MF裡面添加如下一句話:

Main-Class: test.someClassName

 

然後我們可以在控制台裡輸入java -jar test.jar即可以運行這個jar。

 

但是我們這個項目需要引用其他第三方的jar包,在eclipse裡面以項目jar包的形式引用了這個叫做some.jar的包,當時放在項目的lib子目錄下,最後項目打包時把這個some.jar也打進來了,但是用java -jar執行這個test.jar的時候報找不到Class異常,原因就是jar引用不到放在自己內部的jar包。

 

那怎麼辦。

 

運行時將其加入classpath的方式行不行。就是在運行jar的同時加入classpath參數:

java -classpath some.jar -jar test.jar

 

這種方式應該能解決問題吧,試一下,還是不行。

查了下資料,原來使用java -jar 命令運行jar包時classpath參數將會失效,所以,這種方式也不行。

 

那該怎麼引用其他的jar包呢,答案還是在這個目錄META-INF下的MANIFEST.MF檔案中。jar包引用其他jar包的資訊必須在這個檔案中聲明。

 

我們在MANIFEST.MF中添加如下代碼:

Class-Path: lib/some.jar

 

lib是和test.jar同目錄的一個子目錄,test.jar要引用的some.jar包就在這裡面。

然後測試回合,一切正常。

 

如果有多個jar包需要引用的情況:

Class-Path: lib/some.jar lib/some2.jar

每個單獨的jar用空格隔開就可以了。

 

 

 

總結:不管怎麼樣,只要想辦法在執行test.jar之前把需要引用的jar匯入classpath就可以。你甚至可以把需要引用的包都放到jre/lib/ext目錄下,這樣jvm一啟動,這些包就載入了。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.