Javaプログラムを実行するには、javaコマンドを使用します。
java [option ...] class-name
javaコマンドを実行するためには、JRE (Java Runtime Environment) または JDK (Java Development Kit) をインストールする必要がある。
さらに、javaコマンドがあるディレクトリ(フォルダ)のパスを環境変数 PATH に設定する必要がある。
javaコマンドの引数には、実行するクラスの名前を指定する。クラスファイルの拡張子(.class)は省略する。
$ java Example
パッケージに含まれるクラスを実行するには、パッケージも含めて指定する。
$ java com.segakuin.example.HelloWorld
javaコマンドの引数にクラスファイルではなくJARファイルを指定して実行することもできる。ただし、JARファイルを実行するには、javaコマンドに -jar オプションを指定する。
$ java -jar example.jar
optionにはJavaの実行オプションを指定する。Javaの実行オプションを次に示す。
$ java -cp /home/tsuka/lib/ Example
クラスパスには、複数のパスをセミコロンで区切って指定できる。
$ java -cp /home/tsuka/lib;/home/tsuka/example.jar Example
-classpath または -cp オプションで指定したクラスパスは、環境変数 CLASSPATH の設定よりも優先される。
$ java -ea Example.class
$ java --h
$ java --help
$ java -version Example.class
$ java -version
PermGen領域の最大サイズを変更する。
ソースファイル HelloWorld.java をコンパイルして生成されたクラスファイル HelloWorld.class を実行する例を次に示します。
$ java HelloWorld
Hello world
パッケージ化したクラスファイル ./com/segakuin/example/HelloWorld.class を実行する例を次に示します。
$ java com.segakuin.example.HelloWorld
Hello world
Javaを実行した際、「 Exception in thread "main" java.lang.NoClassDefFoundError: 」と表示された場合、CLASSPATHの設定かクラス名の指定方法に誤りがあります。以下の点を調べてみてください。
システムプロパティを設定するには、
java
コマンドに
-D
オプションを指定する。
JavaプログラムをJIT (Just in Time)コンパイラなしで実行する例を次に示す。
java -Djava.compiler=NONE com.segakuin.example.HelloWorld
永続世代領域(PermGen space: Parmanent generation space)とは、Javaクラスとそのメタ情報が格納されるメモリ領域である。クラスはロードされる時点でPermGen spaceに保存される。たくさんのクラスがロードされる場合、PermGen spaceの最大サイズを超えると、「 java.lang.OutOfMemoryError: PermGen space 」が発生する。
Javaプログラムを実行した際、「 java.lang.OutOfMemoryError: PermGen space 」と表示された場合、PermGen spaceが不足している。
JVMの
-XX:MaxPermSize
オプションでPermGen spaceの最大サイズを指定することができる。最大サイズの値にはm(メガ)などの単位を指定することもできる。
java -XX:MaxPermSize=128m com.segakuin.example.HelloWorld
なお、Java 8からPermGenが廃止され、Metaspaceに代わった。