linux下運行java項目


2016年3月24日10:10:39

1,把項目導出成一個jar包.

這里有一點要注意,在jar包中沒有source folder這個概念.選中一個項目,右鍵Export,JAR file,下一步,選擇我們的導出的文件

image

如圖,選擇了,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--未完


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM