在linux下通過命令列或shell指令碼執行jar包時,如果該jar包沒有引用外部jar包,則非常容易,只需使用如下命令就可以實現:
java -jar Test.jar #注意,如果在打包jar檔案時,沒有指定Main入口所在的類,則需要在後面加上類的命名,如com.test.HelloWord
但是實際應用或者生產環境,根本不可能有如果容易的需求,那如果該jar需要引用外部jar包,那又當如何?。需要做一些設定工作,下面是實現步驟:
一、使用jar包的設定檔來引用外部jar包
1、配置MANIFEST.MF檔案
在打包好的jar中,META-INF/MANIFEST.MF 這個檔案中列出所需的外部jar包,檔案內容參考如下:
Manifest-Version: 1.0
Main-Class: xx.json.SentJsonT
Class-Path: lib/commons-beanutils-1.9.2.jar lib/commons-collections-3.2.2.jar lib/commons-io-2.5.jar lib/commons-lang-2.6.jar lib/commons-logging-1.2.jar lib/ezmorph-1.0.6.jar lib/httpclient-4.4.1.jar lib/httpcore-4.4.1.jar lib/httpmime-4.4.1.jar lib/jcl-over-slf4j-1.7.7.jar lib/json-lib-2.4-jdk15.jar lib/noggit-0.6.jar slf4j-api-1.7.7.jar lib/solr-solrj-6.0.1.jar lib/stax2-api-3.1.4.jar lib/woodstox-core-asl-4.4.1.jar lib/zookeeper-3.4.6.jar
注意事項:
1)、Class-Path 後面的jar包的路徑是liunx下的相對路徑,Windows需要修改為\。
2)、Class-Path 後面的jar包之間使用空格分隔,而且必須在同一行中。
2、把所有外部jar包置於lib檔案夾下
在xx.json.SentJsonT.jar所在的檔案夾下,建立lib檔案夾,把所有外部jar包放到該檔案夾下。
3、運行該jar包
java -jar SendJonT.jar<span style="white-space:pre"></span>#一樣的簡單,不一樣的效果
二、使用Java系統內容變數
就是把所有外部的jar包,添加到CLASS_PATH變數裡。