利用指令碼啟動java程式
今天在工作中,需要寫一個shell指令碼,啟動一個socket程式,從而類比簡訊網關。查了一些資料,終於搞定了,現在記錄一下,方便大家查閱。
為了說明使用方法,我們就用最簡單的程式來實現,比如我們要運行下面這個類的main方法
package chb.cmd.test;
import java.io.File;
import java.io.IOException;
import org.apache.log4j.Logger;
public class TestClass ...{
static Logger log = Logger.getLogger(TestClass.class);
/** *//**
* @param args
*/
public static void main(String[] args) ...{
log.debug(args[0]);
File file = new File(args[0]);
try ...{
file.createNewFile();
} catch (IOException e) ...{
e.printStackTrace();
}
}
}
我們需要把這個類所在的project打成jar包,比如叫做:cmdDemo.jar,然後把cmdDemo.jar和該工程所需要的所有jar包放到一起,比如我的目錄是:D:/cmdDemo/lib。
以下要寫指令檔,我們分為兩個部分,windows和linux。
一.windows
在windows下就是要寫大家熟悉的bat檔案,例如我在D:/cmdDemo/lib下建立一個start.bat,內容如下:
java -classpath D:/cmdDemo/lib/log4j-1.2.14.jar;D:/cmdDemo/lib/cmdDemo.jar chb.cmd.test.TestClass D:/cmdDemo/test.txt
然後雙擊該bat檔案,就會發現在D:/cmdDemo目錄下多了個test.txt檔案。
二.linux
在linux下需要建立一個sh指令碼,基本寫法和在windows下一樣,唯一區別是在windows下各個jar包之間的分隔字元是";",而在linux下各個jar包之間的分隔字元是":"。
java -classpath /root/cmdDemo/lib/log4j-1.2.14.jar:/root/cmdDemo/lib/cmdDemo.jar chb.cmd.test.TestClass /root/cmdDemo/test.txt
然後運行這個指令檔就ok了,如果沒有許可權的話,記得使用
chmod +x start.sh
恩,好了,雖然很簡單,但是還是希望能夠協助大家。