2016年3月24日10:10:39
1,把項目導出成一個jar包.
這里有一點要注意,在jar包中沒有source folder這個概念.選中一個項目,右鍵Export,JAR file,下一步,選擇我們的導出的文件
如圖,選擇了,src,和design兩個soruce folder,但是在我們導出jar中只有,包構造的文件名.沒有src這個文件名和design這個文件名.
//這段代碼,得到的.class文件目錄,也就是bin目錄. getClass().getClassLoader().getResource(".")
導出成JAR file和Runnable JAR file的區別
導出JAR file: 會讓你選擇要導出目錄,你選擇得所有soruce folder只是導出對應的bin下面編譯后的文件.
導出Runnable JAR file: 不會讓你選擇導出的文件目錄,默認只導出bin目錄(出就是所有的soruce folder),但是要讓你指定main方法所有類是那一個.
這個導出方式會在MANIFEST.MF文件中添加
Main-Class: com.udv.main.AppMain
Class-Path: .
注意:jar文件里面的配置文件,是不會讀取的,(這里要做一個測試,同時在jar文件的一個包中里面配制文件,在跟目錄也有配置文件,運行的時候去加載那一個配置文件).
注意:當項目引用其它jar是,Runnable JAR file 會創建maven相關東西.
導出soruce folder時,soruce folder下面的配置在jar里面是不會執行到的,要提取出來.
//用這種寫法來得到配置文件有兩個問題: //1,myeclipse中就得到是項目的bin目錄,就算bin目錄下是有這個文件,但是還是會出錯 //1.linux中這段代碼得到的是jvm類加路徑,跟本不是你工程類路徑 getClass().getClassLoader().getResource(".")+"config.properties";
補充一點bin下面的一級目錄就是src的跟目錄,bin目錄下的二級目錄,一定是包結構的目錄了.
配置文件路:
File file1 = new File("config.properties");
1,在myeclipse表示config.properties文件在項目的跟目錄.
2,在運行時表示與jar文件在同一目錄下.如
─jarFile
├─hawei.jar
├─config.properties.
File file1 = new File("etc/config.properties");
1,在myeclipse表示config.properties文件在一個名為etc的source folder
1,運行時表示:如
─jarFile
└─hawei.jar
└─etc
└─config.properties
怎樣運行兩種方法導出的文件 (沒有依賴其它jar的情況下)
1,Runnale JAR file 可以直接用java xxxxx.jar 來運行.
不過要注意配置文件目錄有沒有正確
2,JAR file
1,java –cp xxxxx.jar com.udv.main.AppMain 這樣就可以運行.(這只是沒有用到其它引用包才可以)
這種樣運行還有一種與之相同的運行效果.就是把jar 文件解壓出來,(相當於copy整個bin目錄,)然后用命令
java com.udv.main.AppMain 這樣行動與上面的效果是一樣.(這里要進入項目的跟本目錄,不能是com/udv/main/AppMain就算是文件的形式)
當成你也可以直接運行有main方法的class文件 先cd com/udv/main 然后直接java AppMain (這樣是不可以的,你一定要在項目的跟目錄下面運行)
注意:直接運行jar文件,
那么jar文件所在同級目錄就是項目的跟目錄
如果解壓出來后運行,
那么com(頂級包名)文件夾所在同級目錄就是項目跟目錄.
下面來介紹有引用包的情況
1,可以直接在MAINFEST.MF文件下面設置(一般不用這種方式)
Class-Path中如果有很多項,寫成一行打包的時候會報錯line too long,這時需要把Class-Path分多行寫。注意:從第二行開始,必須以兩個空格開頭
(我沒有)
2,用命令java -cp lib/jedis-2.6.1.jar:bjar.jar:cjar.jar com.udv.main.AppMain(main的類)
注意:jar與jar之間用:號來開,
上面的代碼中引入了三個jar.jedis-2.6.1.jar和bjar.jar和cjar.jar如果bjar和cjar里面都有com.udv.mian這樣的包結構,都有AppMain類,那個jar在前面就執行那個類中的mina方法
3,如果是是直接copy的一個bin目錄,用下面的腳本的方式啟動.
擴展知識:
java -jar loginadd.jar ***.xls&
nohup java -jar loginadd.jar ***.xls&
注意:1、在應用Unix/Linux時,我們一般想讓某個程序在后台運行,於是我們將常會用 & 在程序結尾來讓 程序自動運行。如果不加 就在控制台運行,關閉窗口或者ctrl+c就會停止執行。
2、nohup:程序的的標准輸出被自動改向到當前目錄下的nohup.out文件,起到了log的作用
linux下用腳本啟動java工程(非web工程)--都要引入很多jar的那種
http://lavasoft.blog.51cto.com/62575/204713 (腳本方法啟動 直接copy bin目錄)
腳本方式啟動jar(還有成功)
2016年3月26日23:27:17--未完