Javaを実行するときに使われるJavaコマンド。
オプションや他にも似たようなコマンドがあったりと、意外と知られていないことも多いようだ。
このページではJavaコマンドについてまとめている。ご参考なればと思う。
目次
Javaコマンドの使い方
Javaコマンドとは、Javaアプリケーションを起動するためのコマンドだ。
実際に、アプリケーションを起動するためには、クラスファイルの名前などいくつかの情報をオプションとして指定する必要である。しかし、何も情報をつけないで、WindowsのDOS窓からjavaと入力してみよう。コマンドの後に、「使用方法」が表示される。
これは、既にJavaがインストールされ、java.exeのパスが設定されているからだ。Javaコマンドは何もオプションに指定しなければ、使用方法が表示されるようになっている。
では、この状態からJavaアプリケーションを起動するためのいくつかのJavaコマンドの使い方を見ていこう。
コマンドの書き方の基本は簡単だ。
java [ オプション] class [ 引数 ]
java [ オプション] -jar ファイル名.jar [ 引数 ])
Javaコマンドの書き方の詳細を確認していこう。
java コマンド
実際に「Hellow World!」を表示するクラスファイルHelloWorldを起動してみる。javaコマンドを実行して、クラスファイルを起動すると文字がコンソールに表示される。
これから、HelloWorld.javaから作られたクラスファイルを例に説明を進めていく。コードは次のようになっている。Javaコマンドは、このmain()メソッドを最初に見つけて、アプリケーションを起動する。
1 2 3 4 5 |
public class HelloWorld { public static void main (String[] args) { System.out.println("Hello World!"); } } |
javaw コマンド
javawコマンドを使っても、Javaのアプリケーションを起動できる。書き方はjavaと同じだ。
javaw [ オプション] class [ 引数 ]
javaw [ オプション] -jar ファイル名.jar [ 引数 ])
javawコマンドは、javaコマンドとして認識される。違いは、コンソールとのつながりがないという点だ。コマンドを実行しても、コンソールとのつながりがないので、コンソールに出力される「HelloWorld」は表示されない。
コマンド・プロンプト・ウィンドウに何も表示させたくない時にこのコマンドを使う。しかし、起動のためのエラーはダイアログボックスに表示される。
オプションなし
もし、classpathやcpオプションを使用しなかったり、CLASSPATHを設定しなかったりすると、ユーザのクラスパスはカレントディレクトリになる。カレントディレクトリとは、コマンドを実行しているディレクトリのことだ。
HellowWorldは実行可能なクラスファイルで、実行すると「Hello World!」を表示する。クラスパスを何も指定しないで、javaコマンドでHelloWorldを実行してみよう。
コマンド |
java HelloWorld |
クラスファイル |
C:\commad\HelloWorld.class |
しかし、クラスファイルがカレントディレクトリ(C:\command)にないとどうなるだろうか。
コマンド |
java HelloWorld |
クラスファイル |
C:\commad\classes\HelloWorld.class |
クラスファイルが、カレントディレクトリにないのでエラーが起きる。このエラーを解決するのが次のオプションだ。
オプション -classpath または -cp
クラスファイルを起動する
このオプションで指定できるのは、クラスファイルを検索するためのディレクトリ、Jarファイルのリスト、Zipアーカイブのリストである。つまり、このオプションを使うと、クラスファイルの場所を指定することができる。
早速、前のセクションでエラーが起きたコマンドに-classpathオプションでクラスファイルのディレクトリを指定してどうなるか確かめよう。
コマンド |
java -classpath C:\command\classes HelloWorld |
クラスファイル |
C:\commad\classes\HelloWorld.class |
エラーは起きないで、HellowWorld!が表示された。成功だ。
先のコマンドでは、オプションclasspathに絶対パスC:\command\classesでディレクトを指定したが、相対パスを使うこともできる。もし、カレントディレクトリがC:\commandであれば、クラスファイルのディレクトリの相対パスは、「.\classes」である。
確かめてみよう。
コマンド |
java -classpath .\classes HelloWorld |
クラスファイル |
C:\commad\classes\HelloWorld.class |
相対パスをオプションに指定しても、結果は同じになる。
jarファイルを起動する
jarファイルは、クラスファイルを一つのファイルにまとめたものだ。このjarファイルの中にmainメソッドを持つクラスファイルと起動するための情報が書かれたマニュフェストファイルがあればクラスファイルを起動できる。
この説明の中のHelloWorld.classのソースコードは以下の通りである。
1 2 3 4 5 6 7 |
package greetings; class HelloWorld { public static void main(String args[]) { System.out.println("Hello World!"); } } |
また、このクラスを起動するためのマニュフェストファイルは次の通りである。
Main-Class: greetings.HelloWorld
これらのファイルから作成されたjarファイルを起動する。
コマンド |
java -jar greetings.jar |
jarファイル |
C:\commad\greetings.jar |
jarファイルが、カレントディレクトリではなく、別のディレクトリにある場合に絶対パスで指定して起動する。
コマンド |
java -jar C:\command\lib\greetings.jar |
jarファイル |
C:\commad\lib\greetings.jar |
クラスファイルと同じように相対パスでも指定できる。
コマンド |
java -jar .\lib\greetings.jar |
jarファイル |
C:\commad\lib\greetings.jar |
引数を指定して起動する
引数を指定するには、コマンドの最後にスペースで区切って引数となる値を記述する。例えば、「HelloWorld! from」は固定で、その後に引数で「Java」とか「Tokyo」を追加する場合、コードは次のようになる。
1 2 3 4 5 |
public class HelloWorldFrom { public static void main (String[] args) { System.out.println("Hello World! from " + args[0] ); } } |
では、引数を「Java」で実行してみよう。
コマンド |
java HelloWorldFrom Java |
クラスファイル |
C:\commad\HelloWorldFrom.class |
「Hello World! from」の後に「Java」が表示される。引数を「Tokyo」に変えるとどうなるだろう。
コマンド |
java HelloWorldFrom Tokyocl |
クラスファイル |
C:\commad\HelloWorldFrom.class |
「Hello World! from」の後が、今度は「Tokyo」になっているのが分かるだろう。
オプション -versionと-showversion
Javaのバージョン情報が必要な時は、このオプションを使うことができる。単に、バージョンを確認したいのであれば、オプション「-version」を使う。しかし、バージョン情報を表示した後、アプリケーションも実行する場合は、オプション「-showversion」を設定する。
確認してみよう。
まず、オプション「-version」を付けて、HelloWorldを実行してみる。
確かにバージョンは表示される。しかし、「HelloWorld!」の表示はない。アプリケーションは起動されないのだ。
今度は、オプション「-showversion」を付けて起動してみよう。
今度は、バージョンは表示の後に「HelloWorld!」の表示がある。アプリケーションが起動されていることが分かる。
オプション -help
Javaコマンドのオプションを調べるには、-helpオプションを使う。このオプションを指定してコマンドを実行する書き方とオプションの一覧が表示される。
オプション -D システム・プロパティ
システム・プロパティを設定するためには、-Dオプションを使う。システム・プロパティとは、システムが持つ様々な属性のことだ。例えば、表示するフォントを変えたい時など、システム・プロパティを使えばコードの書き換えなしで、システム・プロパティを設定できる。
実際にサンプルで確かめてみよう。このサンプルで、システム・プロパティを設定するために使用するコードを以下に示す。
1 2 3 4 5 6 |
public class SystemProperty { public static void main (String[] args) { String property = System.getProperty("system.language"); System.out.println("system.language = " + property); } } |
Javaコマンドを-Dオプションで実行すると、システム・プロパティsystem.languageにJapaneseが設定されている。
このように、必要なシステム・プロパティを決めてJavaコマンドでアプリケーションを起動する際に設定するようにすれば、変更しやすいアプリケーションになる。
まとめ
このページではjavaコマンドについてまとめてお伝えした。基本的にはjavaを実行するときにしか使わないし、Eclipseなどを使っているとより使わないが、Javaを使っていく者として一通り押さえておこう。
コメント