日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java打jar包,引用其他.jar文件

發布時間:2025/3/21 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java打jar包,引用其他.jar文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家都知道一個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用空格隔開就可以了。

?

?

?

?

?

打jar包:

?

?

JDK中自帶了jar命令,可以生成jar包,在命令行輸入jar可以看到用法。

E:\20121008>jar
用法: jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] file
s ...
選項包括:
??? -c? 創建新的歸檔文件
??? -t? 列出歸檔目錄
??? -x? 解壓縮已歸檔的指定(或所有)文件
??? -u? 更新現有的歸檔文件
??? -v? 在標準輸出中生成詳細輸出
??? -f? 指定歸檔文件名
??? -m? 包含指定清單文件中的清單信息
??? -e? 為捆綁到可執行 jar 文件的獨立應用程序
??????? 指定應用程序入口點
??? -0? 僅存儲;不使用任何 ZIP 壓縮
??? -M? 不創建條目的清單文件
??? -i? 為指定的 jar 文件生成索引信息
??? -C? 更改為指定的目錄并包含其中的文件
如果有任何目錄文件,則對其進行遞歸處理。
清單文件名、歸檔文件名和入口點名的指定順序
與 "m"、"f" 和 "e" 標志的指定順序相同。

示例 1:將兩個類文件歸檔到一個名為 classes.jar 的歸檔文件中:
?????? jar cvf classes.jar Foo.class Bar.class
示例 2:使用現有的清單文件 "mymanifest" 并
?????????? 將 foo/ 目錄中的所有文件歸檔到 "classes.jar" 中:
?????? jar cvfm classes.jar mymanifest -C foo/ .

?

?

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

轉載于:https://www.cnblogs.com/yinzhidong/p/6124637.html

總結

以上是生活随笔為你收集整理的java打jar包,引用其他.jar文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。