Java > javaコマンドの使い方

更新日 2013-11-12
広告
javaコマンドの使い方を紹介します。

クラスの実行

mainメソッドを持つJavaのクラス名を指定すると、mainメソッドを呼び出すことができます。
 $ java クラス名
以下のサンプル Sample.java を実行してみます(あえてlog4jを利用しています)。
package sweng.tips;

import org.apache.log4j.Logger;

public class Sample {

    private static final Logger logger = Logger.getLogger(Sample.class);

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

}
ディレクトリの構造は以下のようになっています。
 root/
   lib/log4j-1.2.15.jar
   sweng/tips/Sample.java 
ディレクトリroot から、Sample.javaを実行する場合、以下のようになります。
$ java -cp .:lib/log4j-1.2.15.jar sweng.tips.Sample
main
パッケージ名とクラス名を指定していることに注意してください。

クラスパスの指定

上の例では、Sampleクラスを実行する際に、クラスパスを指定しています。
$ java -cp .:lib/log4j-1.2.15.jar sweng.tips.Sample

クラスパスは、デフォルトでカレントディレクトリ(この場合はrootディレクトリ)が設定されます。今回はlog4jを利用しているので、lib/log4j-1.2.15.jarをクラスパスに設定する必要があります。

複数のクラスパスを指定する場合(ライブラリを複数利用する場合など)は、コロン(:)区切りで指定してください。上記の例では、カレントディレクトリ(.)と、log4j-1.2.15.jarの2つを、クラスパスに設定しています。

確保するヒープメモリサイズの設定

メモリをたくさん使用するアプリケーションを実行する場合は、メモリの使用量を設定する必要があります。Javaアプリの実行中にOutOfMemoryエラーが発生した場合は、以下のように、メモリの使用量を設定してみるとよいでしょう。
 $ java -Xmx1024m -Xms512m -cp .:lib/log4j-1.2.15.jar sweng.tips.Sample
  • -Xmx : Java VMが利用するメモリの最大値
  • -Xms : Java VMが起動時に確保するメモリ値
これで、最大1024MB (=1GB)までメモリを利用するようになります。

Permanentメモリサイズの設定

Permanentメモリサイズを設定するには-XX:MaxPermSizeを指定します。 Grailsのように、巨大なミドルウェアを使う場合は、たくさんのクラスをロードすることになるので、Permanentメモリの最大サイズを増やすことを検討してみてもよいでしょう。
$ java -XX:MaxPermSize=256m
jstatコマンドを使えば、Permanentメモリの最大サイズを確認できます。 PGCMXの値を調べればよいです。
$ jstat -gccapacity java_process_PID

システムプロパティの設定

「-D」を使うと、システムプロパティを指定して、Javaアプリを実行できます。
$ java -Dfile.encoding=UTF-8 -Xmx1024m -Xms512m -cp .:lib/log4j-1.2.15.jar sweng.tips.Sample
上の例では、プロパティ「file.encoding」に、「UTF-8」を設定して、Javaアプリを実行しています。

UseSplitVerifier

Java 5から導入された新しいtype checker(型をチェックするプログラム)を利用するオプション。Java 7ではデフォルトで有効になっている。java 7で、java.lang.VerifyErrorが発生するときは、このオプションを無効にしてみると、エラー解決できる場合がある(私の場合、java7u5で確認済み)。

無効にするには、マイナス(-)に続けて指定すればよい。

$ java -XX:-UseSplitVerifier ...
広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system