使用JAR包中MANIFEST.MF的注意事項(xiàng)
JAR包中MANIFEST.MF注意事項(xiàng)
1. Manifest-Version
用來(lái)定義manifest文件的版本,例如:Manifest-Version: 1.0
2. Created-By
聲明該文件的生成者,一般該屬性是由jar命令行工具生成的,例如:Created-By: Apache Ant 1.5.1
3. Signature-Version
定義jar文件的簽名版本
4. Main-Class
定義jar文件的入口類,該類必須是一個(gè)可執(zhí)行的類,一旦定義了該屬性即可通過(guò) java -jar x.jar來(lái)運(yùn)行該jar文件。
5. Class-Path
應(yīng)用程序或者類裝載器使用該值來(lái)構(gòu)建內(nèi)部的類搜索路徑
注意事項(xiàng)
1.文件最后必須要有個(gè)換行(建議2個(gè)換行),而且該行不能有空格
2.Manifest-Version、Main-Class和Class-Path后面跟著一個(gè)英文的冒號(hào),冒號(hào)后面必須跟著一個(gè)空格,然后才是版本號(hào)、類和ClassPath
3.jar包內(nèi)有些配置文件想放在jar包外面,比如文件config.properties:如果這個(gè)文件是以路徑方式載入的,比如new file("./config/config.properties"),那么將config.properties放在jar包相同目錄下的config目錄下即可,也就是說(shuō)“./”路徑等價(jià)于jar包所在目錄;如果這個(gè)文件是以ClassPath下的文件這種方式載入的,比如在Spring中載入classpath:config.properties,則在MF文件的配置文件的ClassPath中添加“./”,然后將這個(gè)配置文件與jar包放在同一個(gè)目錄即可,當(dāng)然也可以在MF文件的配置文件的ClassPath中添加“./config/”,然后把配置文件都放在jar包相同目錄下的config目錄下。
Class-Path的注意事項(xiàng)
1.每行最多72個(gè)字符;
2.多個(gè)jar包用空格隔開;
3.如果需要換行,行首要有一個(gè)空格,行尾也要有一個(gè)空格(一般是這樣,例外情況如第4點(diǎn)注意事項(xiàng));
4.如果行尾沒(méi)空格,則該行與下一行的內(nèi)容是連接起來(lái)的,如例子2中l(wèi)ib/dom4j-1.6.1.jar被拆分到了2行里,lib/dom4j-1.6后面是沒(méi)有空格的,與.1.jar是直接連在一起組成一個(gè)jar包的。
例子1:
Manifest-Version: 1.0 Class-Path: ?lib/bsf.jar? ?lib/log4j.jar? ?lib/dom4j-1.6.1.jar? ?lib/jakarta-oro-2.0.8.jar? ?lib/jaxen-1.1-beta-6.jar? ?lib/javascriptplugin.ZIP? ?lib/js.jar? ?lib/sopapi.jar? ?lib/sopdes.jar? ?lib/jakarta-regexp-1.5.jar? ?lib/commons-net-1.4.1.jar? ?lib/commons-pool2-2.4.2.jar? ?lib/log4j-1.2.17.jar?
例子2:
Manifest-Version: 1.0 Class-Path: ?lib/bsf.jar lib/log4j.jar lib/dom4j-1.6 ?.1.jar lib/jakarta-oro-2.0.8.jar lib/jaxen-1.1-beta-6.jar lib/javascr ?iptplugin.ZIP lib/js.jar lib/sopapi.jar lib/sopdes.jar lib/jakarta-re ?gexp-1.5.jar lib/commons-net-1.4.1.jar
Java可執(zhí)行jar的manifest編寫
Eclipse:形式
選中項(xiàng)目右鍵
命令行形式
1.編寫Java類
2.命令行指定到項(xiàng)目/src文件夾,編譯
3.編寫manifest文件
4.目錄重新定位到bin/classes編譯文件目錄下, 執(zhí)行打包命令
Jar /? 看詳細(xì)說(shuō)明。
命令行執(zhí)行 java -jar xxx.jar時(shí) , 通過(guò)-cp或者-classpath指定lib文件夾都無(wú)效, 需要這樣:
java -Djava.ext.dirs=./lib/ -jar xxxx.jar
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringCloud Alibaba 基本開發(fā)框架搭建過(guò)程
這篇文章主要介紹了SpringCloud Alibaba 基本開發(fā)框架搭建過(guò)程,開發(fā)工具選用的idea,本文通過(guò)圖文實(shí)例相結(jié)合給大家分享搭建全過(guò)程,需要的朋友可以參考下2021-06-06Java實(shí)現(xiàn)企業(yè)員工管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)企業(yè)員工管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02Java數(shù)據(jù)庫(kù)連接池的幾種配置方法(以MySQL數(shù)據(jù)庫(kù)為例)
這篇文章主要介紹了Java數(shù)據(jù)庫(kù)連接池的幾種配置方法(以MySQL數(shù)據(jù)庫(kù)為例) 的相關(guān)資料,需要的朋友可以參考下2016-07-07Spring jpa和mybatis整合遇到的問(wèn)題解析
有朋友說(shuō)jpa相比mybatis太難用,多表聯(lián)合的查詢寫起來(lái)也比較費(fèi)勁,所以便加入了mybatis的支持,在配置jpa時(shí)遇到各種問(wèn)題,需要修改相關(guān)配置文件,下面小編給大家分享下修改配置文件的思路,感興趣的朋友參考下2016-10-10java 文件鎖的簡(jiǎn)單實(shí)現(xiàn)
這篇文章主要介紹了java 文件鎖的簡(jiǎn)單實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2017-07-07Java實(shí)現(xiàn)Dijkstra輸出最短路徑的實(shí)例
這篇文章主要介紹了Java實(shí)現(xiàn)Dijkstra輸出最短路徑的實(shí)例的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下2017-09-09RocketMQ?producer容錯(cuò)機(jī)制源碼解析
這篇文章主要為大家介紹了RocketMQ?producer容錯(cuò)機(jī)制源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03