PowerShellでJavaプログラムを実行し戻り値を得る

PowerShellで外部のプログラムを実行する方法は、Start-ProcessやInvoke-Expression等いろいろ有るようですが、最もバッチファイル(*.BAT)っぽくシンプル・大きく異ならない書き方はどうなるかなと。

以下は実行するJavaプログラムです。コンパイル済みの物をJarにし、javaコマンドで実行します。引数の指定が有る場合は正常終了、引数の指定がない場合は異常終了します。

package jp.mo.ur.external;

public class ExternalCommand {

	public static void main(String[] args) {
		if (args.length < 1) {
			System.err.println("引数指定なし");
			System.exit(1);
		}
		System.out.println("処理A" + args[0]);
		System.exit(0);
	}
}

外部コマンドを実行する、引数に変数を使う、終了コード(コマンドプロンプトで言う所の%ERRORLEVEL%)を取得、エラーなら終了、という処理がこうなりました。

$CLASSPATH = "F:\uraku\Desktop\ec.jar"
$PACKAGE = "jp.mo.ur.external."

echo "Javaプログラム実行1"
&java -cp $CLASSPATH ($PACKAGE + "ExternalCommand") "hoge"
echo ("終了コードは" + $LASTEXITCODE)

if ($LASTEXITCODE -ne 0) {
    exit
}

echo "Javaプログラム実行2"
&java "-cp" $CLASSPATH ($PACKAGE + "ExternalCommand")
echo ("終了コードは" + $LASTEXITCODE)

実行結果です。アホ毛。
ps_result1

とりあえず目的が果たせました。
ここでコマンドプロンプトでの実行と異なるのは、「発生場所」以降に表示されるエラー内容。コマンドプロンプト上では表示されません。これが不要な場合は……。

Share this…

Azure Webサイト(無料版)を日本リージョンに移動してみた

先日Windows Azureに日本リージョンが追加され、レイテンシもだいぶ改善されたとの事で移し替えを考えていたのですが、実際にやってみた所、特にトラブルも無く15分~20分程度で出来ました。

有料版だとカスタムドメインが使えるので、以下のような方法でいけるようです
しばやん雑記 Windows Azure Web サイトで動かしているサービスを東アジアから東日本へ移行してみた

が、今回は無料版なのでカスタムドメインが(おそらく)利用できません。
そのためダウンタイムが発生してしまいます。以下、ざっくりとおこなった手順と感想など。

続きを読む

Share this…