Java

【Java】シェルスクリプトからJavaを実行する方法

こんにちは、ともです。

本日はシェルスクリプトからJavaのプログラムを実行するまでを記事にしてみたいと思います。

仕事でバッチ処理をするプログラムを書くようになりました。シェルスクリプトからJavaを実行するという単純なプログラムですが、バッチに馴染みのない私は理解するのが大変でした。そこで備忘録として残しておきたいと思います。

記事の流れは下記です。

はじめに、HelloWorldを標準出力するJavaソースをシェルスクリプトから実行

  1. Javaのソースを書き、コンパイル
  2. シェルスクリプトからjavaコマンドを実行する
  3. 実行結果の確認

Javaのソースを書いてコンパイル

HelloWorldを出力するプログラムをシェルスクリプトで実行してみましょう。

package shell_and_Java;

public class HelloWorld {
	public static void main(String[] args) {
		System.out.println("HelloWorld");
	}
}

特に説明の必要はないですね。

フォルダの構成は下記です。

.
└── shell_and_Java
    └── HelloWorld.java

shell_and_Javaの一つ上のフォルダへ移動しコンパイルしましょう。

javac shell_and_Java/HelloWorld.java

コンパイル後は次のようなフォルダになっているかと思います。

.
└── shell_and_Java
    ├── HelloWorld.class
    └── HelloWorld.java

HelloWordl.classというクラスファイルができているかと思います。

シェルスクリプトから実行

Javaを実行する時は「java」コマンドを実行しますね。

javaコマンドをシェルにやらせれば良い訳です。次のように書いてみましょう。

バッチファイル(do-java.sh)を作成し、次のような一行を書きましょう。

java shell_and_Java.HelloWorld

フォルダ構成はこんな感じです。

.
├── .do-java.sh
└── shell_and_Java
    ├── HelloWorld.class
    └── HelloWorld.java

では、シェルスクリプトを実行してみましょう。

.do-java.shと同じ場所で次のコマンドを打ちましょう。

./.do-java.sh

これでシェルスクリプトを実行できます。しかし、次のような結果になるかと思います。

tomo-2:src tomo$ ./.do-java.sh
-bash: ./.do-java.sh: Permission denied

ファイルを実行する許可がないということなので、実行権限を与えてましょう。

chmod 777 .do-java.sh

そしてもう一度、シェルを実行を実行してみましょう。

tomo-2:src tomo$ ./.do-java.sh
HelloWorld

作成したシェルスクリプトが実行されてjavaコマンドが実行され「Hello World」が出力されていますね。

まとめ

Javaの実行コマンドをシェルファイルに書き実行するまでの流れを書きました。

Javaコマンドをシェルファイルに書いているだけですから簡単ですね。