How to run a jar

自己的寫的jar包如何運行了?在window上c寫的exe當然容易了,jar包可以通過如下方式比如有jar包publish.jar,此jar包不依賴任何jar包,那麼:

JAVA –JAR Hello.jar

即可完成。不過需要注意的是Hello.jar必須要在Manifest.mf指明入口函數(我的package是com.byinsight.publish,主類是Publish)

Manifest-Version: 1.0

Main-Class: com.byinsight.publish.Publish

如此就可以執行你的jar包了。但是如果jar依賴於別的jar包才能運行怎麼辦?你可以把這些jar包放入%Java_home%/jre/lib/ext中,此時修改classpath時沒有用的。或者通過java –cp。比如我的jar包在路徑在C:/Program Files/Java/jre6/mylib中。我可以新建一個bat文件,內容如下:

cd C:/Program Files/Java/jre6/mylib

"C:/Program Files (x86)/Java/jre1.6.0_03/bin/java" –cp aa.jar;bb.jar c:/publish.jar com.byinsight.publish.Publish

Jar包的分隔linux系統下用冒號,windows下用分號注意此時我的運行jar和依賴的jar不在一個目錄下,否則c:/publish.jar可以去掉。這樣這個bat文件和jar包交給客戶就行了,如果jar位置變了只需要改變文件夾路徑即可。但是還有一個問題,如果所需要的jar包太多了怎麼辦?固然可以通過dir /b *.jar >> t.txt先將所有jar倒入到文本中在通過notepad之類的整理好,難道沒有更好的方法嗎?比如 java –cp *.jar 之類的。當然有了!如下:

cd C:/Program Files (x86)/Business Objects/common/4.0/java/lib

java -Djava.ext.dirs=. -cp c:/publish.jar com.byinsight.publish.Publish

只需要指明目錄即可不用一個一個的把jar包放在裏面!這樣做的效果就相當於之前的把jar包放進了%Java_home%/jre/lib/ext中,因爲指明瞭ext的系統變量。關於java類加載可以參考http://en.wikipedia.org/wiki/Java_Classloader。也可以通過一個小程序看看你的ext目錄:

public class Test {

    public static void main(String args[]){

        Properties properties = System.getProperties();

        System.out.println(properties.getProperty("java.ext.dirs"));

        

    }

}

發佈了188 篇原創文章 · 獲贊 9 · 訪問量 33萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章