Linux下啟動jar包程序,直接上步驟:
1、首先,maven項目打成一個jar包,同時使用dependency:copy-dependencies命令導出依賴的jar包,把導出的包和項目jar包都放進lib文件夾裡
2、編寫shell腳本:
#!/bin/bash
export JAVA_HOME=/home/program/java/jdk1.8.0_60 ###jdk安裝路徑
java=$JAVA_HOME/bin/java
JAVA_OPTS=$JAVA_OPTS:"-Xms1024m -Xmx1024m"
export JAVA_OPTS
SERVER_HOME=/opt/nutch ###放置lib文件夾和shell的目錄
LIBDIR=$SERVER_HOME/lib
CONFDIR=$SERVER_HOME/conf ###可去掉,放置配置文件
export CONFDIR
export LIBDIR
CLASSPATH=${CLASSPATH}:${LIBDIR}
CLASSPATH=${CLASSPATH}:${CONFDIR}:${LIBDIR}
for cdir in ${LIBDIR}/*.jar
do
CLASSPATH=$CLASSPATH:$cdir
export CLASSPATH
done
export CLASSPATH
exec $java com.yaochufa.jframework.nutch.AppStarter $* >logs/stdout.log 2>&1 & ###指定啟動的程序類
#tail -f /home/yang/program/file/stock_task/logs/stdout.log
可在啟動的程序類main方法中加入以下代碼:
CountDownLatch latch =new CountDownLatch(1);
latch.await();
3、linux進入目錄,賦予shell腳本可執行的權限,執行shell
這時會出現一個錯誤:-bash: ./nutch.sh: /bin/bash^M: bad interpreter: No such file or directory
主要原因是nutch.sh是我在windows下編輯然後上傳到linux系統裡執行的。.sh文件的格式為dos格式。而linux只能執行格式為unix格式的腳本。
我們可以通過vi編輯器來查看文件的format格式。步驟如下:
1.首先用vi命令打開文件
Shell代碼

[root@localhost test]# vi nutch.sh
2.在vi命令模式中使用 :set ff 命令

可以看到改文件的格式為dos

3.修改文件format為unix
方法一:使用vi修改文件format
命令:set ff=unix

執行完後再通過set ff命令查看文件格式,結果如下:

方法二:直接使用dos2unix命令修改
Shell代碼

[root@localhost test]# dos2unix nutch.sh
dos2unix: converting file test.sh to UNIX format ...
修改完後再次執行./test.sh,執行正確:
Shell代碼

[root@localhost test]# ./nutch.sh
test shell
參考資料:
什麼時候使用CountDownLatch http://www.importnew.com/15731.html