こんちゃ(´・ω・)ノ
シェルスクリプトファイル(sh)から
javaを起動する方法を記述しておく。
★サンプル
バッチサンプル
■ディレクトリ構成
batch
├bin 実行フォルダ
│ ├sample.bat
│ └sample.sh
│
├conf
│ ├logback.xml ログ設定
│ ├batch.conf Linux用設定ファイル
│ └batch.ini Windows用設定ファイル
│
├lib ライブラリ
│ ├logback-classic-0.9.18.jar
│ ├logback-core-0.9.18.jar
│ ├slf4j-api-1.5.11.jar
│ └sample.jar
│
├log ログフォルダ
│ └batch.log
│
└src/jp/co/test/Sample.java
■シェルスクリプトファイル
#!/bin/sh
echo "########################################"
echo "# 実行プログラム : Sample.class"
echo "# 実行プログラム名 : サンプルクラス"
echo "# 処理内容 : 引数がなければ正常終了"
echo "# 引数があれば異常終了"
echo "# 引数 : パラメータ1"
echo "# 返却値 : 0 [正常終了]"
echo "# : 1 [異常終了]"
echo "########################################"
echo "###########################"
echo "# 環境変数設定"
echo "###########################"
# batch.confファイル読み込み
# BATCH_LIBRARY_PATH : バッチ用ライブラリのパス
# BATCH_CONFIG_PATH : バッチ用設定ファイルのパス
cd `dirname $0`
. ../conf/batch.conf
# クラスパス設定
CLASS_PASS=".:${BATCH_LIBRARY_PATH}/*:${BATCH_CONFIG_PATH}/*"
# 実行するJavaClass指定
export EXECUTE_CLASS="jp.co.test.Sample"
# 各設定値をコマンドプロンプトに表示
echo "${EXECUTE_CLASS}"
echo "${CLASS_PASS}"
echo "###########################"
echo "# Java実行"
echo "###########################"
echo "java -cp ${CLASS_PASS} ${EXECUTE_CLASS} $1"
java -cp "${CLASS_PASS}" "${EXECUTE_CLASS}" $1
RESULT=$?
echo "###########################"
echo "# 返却値"
echo "###########################"
if [ ${RESULT} = 1 ]; then
echo "異常終了" ${RESULT}
exit 1
fi
echo "正常終了" ${RESULT}
exit 0
■解説
基本的にはコメント書いてあるとおりです。
(1)設定ファイル読み込み
batch.confファイルを読み込んで、
設定ファイルとライブラリのディレクトリを取得
(2)CLASS_PASSを設定
クラスパスはJavaプログラムでlibとかによく入っている、
いろんなjarを読み込むためのもの。
まぁ他にもいろいろ役割はあるのだが、
とりあえずそんな感じで覚える。
※java6から「*」での指定が可能になった。
(3)実行クラス指定
シェルから実際に実行するクラスを指定
(4)Java実行コマンド
環境変数でjavaが設定されていて使えること。
直接指定してもいいのだが。
設定されているかどうかは、
コマンドプロンプトから
java -versionコマンドを実行する。
バージョンが表示されれば、設定はされている。
(5)返却値取得
javaの終了時に「System.exit(数値)」で、
バッチやシェルに返却値を返すことが出来る。
[25回]
PR
COMMENT