有些時候,須要將java程序雙擊就能夠運行的jar文件,若是用手工打包會比較痛苦(尤爲是包含有第三方的jar時),這裏介紹一個快捷的方式:用FatJar實現。java
一、下載、配置。linux
fatjar是Eclipse的一個插件,下載後配置到eclipse中便可。windows
下載地址:http://downloads.sourceforge.net/fjep/net.sf.fjep.fatjar_0.0.27.zip?modtime=1195824818&big_mirror=0eclipse
在線安裝地址:http://kurucz-grafika.de/fatjar函數
配置好從新啓動eclipse,在「首選項」可發現「Fat Jar Prefreence」,表示安裝成功。工具
二、生成可運行jar:ui
選中一個項目,右鍵選擇「build fat jar」探出對話框,"jar-name"、「Main-Class」必須填寫。spa
完成後「下一步」,.net
選擇須要處處的資源(通常全選擇)插件
選好後,點擊「完成」生成jar文件。
用rar打開文件能夠看到第三方的庫也一併打入了包中。
ok,如今運行「java -jar xxx.jar」能夠看到結果了。
三、在windows、linux下執行
(假定咱們打包後的文件名稱是resourceMonitor.jar,主類是job.StartUp,而且須要一個sigar-x86-winnt.dll庫支持)
a、在windows下:
新建runResourceMonitor.bat文件,和resourceMonitor.jar同目錄,內容以下:
拷貝sigar-x86-winnt.dll,和resourceMonitor.jar同目錄。
最後的目錄結構:
雙擊「runResourceMonitor.bat」便可啓動服務。
b、在linux下運行
linux和windows有所不一樣,主要表如今對lib庫位置的讀取上。win下直接放在jar同目錄下便可自動找到,可是linux下須要指定LD_LIBRARY_PATH的位置。關於LD_LIBRARY_PATH能夠看本文後面的知識點。
方法是:
在resourceMonitor.jar所在目錄下建立run.sh,內容以下:(nohup是後臺執行命令,關於nohup能夠看本文後面的知識點。)
而後在當前目錄下建立so文件夾,並拷貝所需動態連接文件「libsigar-x86-linux.so」到該目錄。
最後的目錄結構:
如今進入對應目錄執行run.sh 便可。注意chmod一下。
ok,大功告成。
===================linux小知識=======================
關於LD_LIBRARY_PATH的小知識:
定義
Linux環境變量名,該環境變量主要用於指定查找共享庫(動態連接庫)時除了默認路徑以外的其餘路徑。(該路徑在默認路徑以前查找)
移植程序時的常常碰到須要使用一些特定的動態庫,而這些編譯好的動態庫放在咱們本身創建的目錄裏,這時能夠將這些目錄設置到LD_LIBRARY_PATH中。
編輯本段示例
當執行函數動態連接.so時,若是此文件不在缺省目錄下‘/usr/local/lib’ and ‘/usr/lib’.
那麼就須要指定環境變量LD_LIBRARY_PATH
假如如今須要在已有的環境變量上添加新的路徑名,則採用以下方式:
LD_LIBRARY_PATH=NEWDIRS:$LD_LIBRARY_PATH.(newdirs是新的路徑串)
(注:GNU系統能夠自動添加在 /etc/ld.so.conf文件中來實現環境變量的設置)
關於nohup:
nohup nohup 命令 用途:LINUX命令用法,不掛斷地運行命令。 語法:nohup Command [ Arg ... ] [ & ] 描述:nohup 命令運行由 Command 參數和任何相關的 Arg 參數指定的命令,忽略全部掛斷(SIGHUP)信號。在註銷後使用 nohup 命令運行後臺中的程序。要運行後臺中的 nohup 命令,添加 & ( 表示「and」的符號)到命令的尾部。 若是不將 nohup 命令的輸出重定向,輸出將附加到當前目錄的 nohup.out 文件中。若是當前目錄的 nohup.out 文件不可寫,輸出重定向到 $HOME/nohup.out 文件中。若是沒有文件能建立或打開以用於追加,那麼 Command 參數指定的命令不可調用。若是標準錯誤是一個終端,那麼把指定的命令寫給標準錯誤的全部輸出做爲標準輸出重定向到相同的文件描述符。 退出狀態:該命令返回下列出口值: 126 能夠查找但不能調用 Command 參數指定的命令。 127 nohup 命令發生錯誤或不能查找由 Command 參數指定的命令。 不然,nohup 命令的退出狀態是 Command 參數指定命令的退出狀態。 nohup命令及其輸出文件 nohup命令:若是你正在運行一個進程,並且你以爲在退出賬戶時該進程還不會結束,那麼可使用nohup命令。該命令能夠在你退出賬戶/關閉終端以後繼續運行相應的進程。nohup就是不掛起的意思( n ohang up)。 該命令的通常形式爲:nohup command & 使用nohup命令提交做業 若是使用nohup命令提交做業,那麼在缺省狀況下該做業的全部輸出都被重定向到一個名爲 nohup.out的文件中,除非另外指定了輸出文件: nohup command > myout.file 2>&1 & 在上面的例子中,輸出被重定向到myout.file文件中。 使用 jobs 查看任務。 使用 fg %n 關閉。 另外有兩個經常使用的ftp工具ncftpget和ncftpput,能夠實現後臺的ftp上傳和下載,這樣我就能夠利用這些命令在後臺上傳和下載文件了。