タグ別アーカイブ: Java

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

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


Java SE 7でのAndroidプログラミング(2014年1月)

Androidアプリを書いた事の有る方ならご存知のように、JavaコンパイラはJava SE 6 もしくは 5準拠設定である必要が有り、7準拠でのコンパイルは不可です。
しかし、あと3か月でJava SE 8が登場するというご時世であり、Java 6→7での使い勝手の向上もそろそろ使いたいし(<>など、違う、そうじゃないという批判も有ったりもしますが)、さりげなく対応していたりしないかと思い試してみました。

Android42_JavaSE7

やっぱり駄目でした。

環境:
Android SDK Tools : 22.3
Android SDK Platform-tools : 19.0.1
Android SDK Build-tools : 19.0.1
android:minSdkVersion=”18″
Java SE 7 Update 51
Eclipse 4.3.1 + ADT 22.3.0

ダイヤモンド演算子、AutoClosable、例外のマルチキャッチだけでも使えるようにならなかなぁ。


Apache POIでの列削除 と行シフト

JavaからMicrosoft Officeのファイル(Wrod、Excel、PowerPoint 2003形式からOOXMLまで)を読み込み、作成編集が出来る大変便利なライブラリ Apache POIの話。

便利……なのですが、Excelファイルを操作する際に行の削除やシフト(一定範囲の行を上や下にずらす)は出来ても、列の削除(シフト)については特にそういうメソッドが用意されていません。結構困る仕様なんですが不思議な事に情報を探していてもあまり触れられていない感じなのでメモとして。Apache POI 3.9準拠です。

続きを読む