忍者ブログ

ビーキョウのIT

このブログは99%ののほほんと1%のお菓子でできています。

カテゴリー「Java」の記事一覧

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。


Java起動シェルスクリプトファイル(sh)

こんちゃ(´・ω・)ノ

シェルスクリプトファイル(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

Java起動バッチファイル(bat)

こんちゃ(´・ω・)ノ


今回はWindowsのbatファイルから、
Javaを起動する方法です。

といっても、普通にコマンドラインからJavaを起動しているだけですが。
 


★追記 2013/01/30 改良したサンプル作成しました。
よかったら参考にして下さい。
バッチサンプル
■ディレクトリ構成
sample/sample.bat
sample/conf/logback.xml
sample/conf/sample.properties
sample/log/sample.log
sample/lib/各jarファイルなどのライブラリ

今回はログ出力用のlogbackライブラリを読み込んでいます。
この形は以下のことを考慮している。
・Sample.class実行後、sample.propertiesを読み込む。
・Sample.class内で実行した処理をlogbackを用いてログ出力を行う。


@echo off

echo ==========================
echo 環境変数設定
echo ==========================

REM == バッチファイル起動ディレクトリ取得 ==
SET BAT_PASS=%~dp0

REM == 実行するJavaClass指定 ==
SET EXECUTE_CLASS=jp.co.test.Sample

REM == クラスパス設定 ==
SET CLASS_PASS=.;%BAT_PASS%conf\.
SET CLASS_PASS=%CLASS_PASS%;%BAT_PASS%lib\logback-classic-0.9.18.jar
SET CLASS_PASS=%CLASS_PASS%;%BAT_PASS%lib\logback-core-0.9.18.jar
SET CLASS_PASS=%CLASS_PASS%;%BAT_PASS%lib\slf4j-api-1.5.11.jar

REM == 各設定値をコマンドプロンプトに表示 ==
echo BAT_PASS=%BAT_PASS%
echo EXECUTE_CLASS=%EXECUTE_CLASS%
echo CLASS_PASS=%CLASS_PASS%

echo ==========================
echo Java実行
echo ==========================

echo java -cp %CLASS_PASS% %EXECUTE_CLASS%
java -cp %CLASS_PASS% %EXECUTE_CLASS%

REM 一時停止
pause


■解説
・@echo off
コマンドを表示させないようにする設定

・echo
コマンドプロンプトに表示する。

・REM
コメントです。

・SET
環境変数設定用のコマンド。
環境変数は";"区切り。
(例)SET Path=%Path%;C:\\java\jdk1.6.0_22\bin
※"%~dp0"はバッチが起動したディレクトリ(バッチファイルがあるところ)が設定される。

・CLASSPATH
クラスパスはJavaプログラムでlibとかによく入っている、
いろんなjarを読み込むためのもの。
まぁ他にもいろいろ役割はあるのだが、
とりあえずそんな感じで覚える。

・Java実行コマンド
環境変数でjavaが設定されていて使えること。
直接指定してもいいのだが。
設定されているかどうかは、
コマンドプロンプトから
java -versionコマンドを実行する。
バージョンが表示されれば、設定はされている。

java -cp {クラスパス} {実行するクラス}

-cp(-classpath)は、
クラスパスの指定である。
ここに、先ほど設定したクラスパス環境変数を入れてあげる。


■まとめ
最近はWebAPとしてのJavaが多くなってきました。
なかなかbatファイルから実行することは少なくなってきました。

ですが、夜間バッチプログラムなど、
JOB管理ツールからJavaを実行する際は、この知識を使うかもしれないです。

JOB管理ツールがbatファイルを実行し、batファイルはjavaを実行する。
このような流れです。

まぁ結構基本的なことだから、
覚えておいて損はないと・・・思う。

拍手[33回]


JDKが切り替わらない時の対処法

こんちゃ(´・ω・)ノ

JDKをダウンロードしてきて、
インストールする。

そして、Windowsの環境変数の設定で
Pathに<%JDK_HOME%>/binを追加する。

ここまで結構どのサイトでも書いてることだろう。
ここで切り替えるには再起動すればいいのだが・・・


今回は再起動しないで切り替える方法を記述する。

再起動しないで行うには、
C:\Windows\System32\配下にある
・java.exe
・javaw.exe
・javaws.exe
の3ファイルを消すとJDKが切り替えられる場合がある。
このファイルはOS起動の際に、javaを読み込むため、
こちらに既存のJavaを置いて読ませているのだ。

WindowsでJDKが切り替えられない!
なんて人はチェックしてみるといいだろう。

ちなみにjavaのバージョンはコマンドプロンプトから
<%java.exeのあるディレクトリ%>\java -version
で確認できる。


◆おまけ
ソフトによってはスペースや日本語などの全角が
パスに含まれているとダメなときがあるので、
JDKをインストールするときは、
「C:\\java\jdk」などスペースや全角文字がないような場所にインストールしたほうが
無難だろう。

拍手[0回]


Javaのデコンパイル -Java Decompiler-

こんちゃ(´・ω・)ノ

今回はJavaのデコンパイルについて。
Javaはコンパイルされてclassファイルになるわけですが、
classファイルは普通には読めません。
ためしにclassファイルをテキストエディタで開くと分かるかと思います。

そこで、
classファイルのソースが見たい!
というときに行うのがデコンパイルです。

デコンパイルするソフトには以下の2つが有名かなと思います。
・jad
・Java Decompiler

今回はJava Decompilerを紹介します。
jadは結構古くからあるもので、いまはJava Decompilerのほうが使いやすいでしょう。


◆Java Decompiler
URL:http://java.decompiler.free.fr/

今回はGUI版をダウンロードします。
※Eclipseプラグイン版もあります。

上のメニューから「JD-GUI」を選択するか、以下のURLをクリックしてください。
http://java.decompiler.free.fr/?q=jdgui

Windows版、Linux版、Mac版が用意されています。
私はWindows7で使用しましたが大丈夫そうでした。

ダウンロードしたら任意の場所に解凍してください。
解凍後、中にある「jd-gui.exe」を実行してください。

あとは左の枠に、jarファイルやclassファイルを読み込ませるだけで、
すぐにソースを見ることができます。

JavaDecompiler.png







◆まとめ
私は以前、jadを使用していたのですが、
なかなかデコンパイルするのにコマンドプロンプトから実行しないといけないので、
少し面倒でした。

そこで、このツールを見つけて使ってみると、
導入もデコンパイルもすごくお手軽で、
かなり楽になりました。

拍手[1回]


フォワードとリダイレクト

こんちゃ(´・ω・)ノ

今回はServletで使用する、フォワードとリダイレクトについて。



◆フォワード
【書き方】
RequestDispatcher dispatch = request.getRequestDispatcher({ページ});
dispatch.forward(request, response);

【順序】
①クライアントからサーバにリクエストを送信
[クライアント]→(リクエスト)→[サーバ]
②サーバ内部で別のページ処理に転送する。
[サーバ.ページ1→ページ2]
③別のページ処理からページ結果が返ってくる。
[クライアント]←(ページ結果)←[サーバ.ページ2]

【レスポンス】
速い(サーバ内でリクエストを引き継いでページ遷移)

【リクエスト情報】
引き継げる

【URL】
最初のリクエストしたURLから変わらない


◆リダイレクト
【書き方】
rsponse.sendRedirect({ページ});

【順序】
①クライアントからサーバにリクエストを送信する。
[クライアント]→(リクエスト)→[サーバ]

②リダイレクト先の情報をレスポンスでクライアントに返す。
[クライアント]←(リダイレクト先情報)←[サーバ]

③クライアントは受け取ったリダイレクト先情報から新たにリクエストを送信する。
[クライアント]→(リダイレクト先へのリクエスト)→[サーバ]

④サーバは受け取ったリクエストからページ結果を返す。
[クライアント]←(ページ結果)←[サーバ]

【レスポンス】
遅い(クライアントに再度リクエストを送信させてページ遷移)
通信が多くなるため、フォワードより遅くなる。

【リクエスト情報】
引き継げない

【URL】
リダイレクトしたページのURLに変わる。


◆まとめ
フォワードは内部でページ遷移のやり取りを行う。
リダイレクトはクライアントに違うページにアクセスするように指示する。

とまぁこんな感じ。
なかなか書いていくと表現が難しい。
まだまだ努力が必要みたい。
 

拍手[0回]


カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

最新コメント

[11/13 NEX-C3]
[01/24 R]
[07/30 ビーキョウ]
[07/25 unknown]
[06/24 ブログランキング]

最新トラックバック

バーコード

広告

カウンター

ブログ内検索

プロフィール


HN:ビーキョウ
職業:SI屋(PG、SE)
<自己紹介>
ちゃお(´・ω・)ノ
ビーキョウです。
どんどんスキルアップして、 その中で学んだことを忘れないようにメモ代わり的な 感じで記事を書いていこうという考えです。

なので、適当な部分が多々あるとは思いますが、 なにとぞよろしくお願いします
(´ ▽`)

バナーエリア

Copyright ©  -- ビーキョウのIT --  All Rights Reserved
Designed by CriCri / Photo by Geralt / Powered by [PR]
/ 忍者ブログ