その他

[戻る] [前に] [次に]

コマンドライン引数を参照する(args)

コマンドラインで指定した引数は、main() メソッドの引数(String 配列)で参照することができます。

§ArgsTest.java
class ArgsTest {
    public static void main(String[] args) {
        for (int i = 0; i < args.length; i++) {
            System.out.println("[" + args[i] + "]");
        }
    }
}
C:\java>javac ArgsTest.java
C:\java>java ArgsTest AAA BBB CCC
[AAA]
[BBB]
[CCC]

外部コマンドを起動する(exec)

メモ帳(notepad.exe)など、他のアプリケーションを起動するには exec() を用います。

§ExecTest.java
import java.io.File;
import java.io.IOException;

class ExecTest {
    public static void main(String[] args) {
        try {
            Runtime.getRuntime().exec("notepad.exe");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

アプリケーションの終了を待ち合わせるには waitFor() メソッドを用います。

Process proc = Runtime.getRuntime().exec("notepad.exe");
proc.waitFor();

簡易テキストエディタ

Java でメモ帳程度の簡易的なテキストエディタを作ってみました。

TextEditor.java
TextEditor

jarファイルを作る(jar)

複数のクラスから構成される Java プログラムをコンパイルすると、複数の *.class ファイルが作成されます。jar コマンドを用いてこれらを *.jar(Java ARchive)形式のファイルにまとめることができます。

§JarTest.java
class JarTest {
    public static void main(String[] args) {
        new JarTest2();
    }
}

class JarTest2 {
    JarTest2() {
        System.out.println("Hello!!");
    }
}

これをコンパイルすると、JarTest.class と JarTest2.class ファイルが作成されます。

C:\java>javac JarTest.java
C:\java>dir
2004/07/03  23:38            290 JarTest.class
2004/07/03  23:38            158 JarTest2.class

jar コマンドを用いて、これを JarTest.jar ファイルにまとめます。

C:\java>jar cvf JarTest.jar *.class
マニフェストが追加されました。
JarTest.class を追加中です。(入 = 290) (出 = 219)(24% 収縮されました)
JarTest2.class を追加中です。(入 = 349) (出 = 261)(25% 収縮されました)
C:\java>dir
2004/07/03  23:40          1,063 JarTest.jar

JarTest.jar ファイルを実行してみますが、まだ Main-Class マニフェストをロードできないため、エラー終了してしまいます。

C:\java>java -jar JarTest.jar JarTest
Failed to load Main-Class manifest attribute from
JarTest.jar

JarTest.jar ファイルの中に、どんなファイルが格納されているか見てみましょう。

C:\java>jar tvf JarTest.jar
     0 Sat Jul 03 23:45:32 JST 2004 META-INF/
    71 Sat Jul 03 23:45:32 JST 2004 META-INF/MANIFEST.MF
   290 Sat Jul 03 23:43:26 JST 2004 JarTest.class
   349 Sat Jul 03 23:43:26 JST 2004 JarTest2.class

JarTest.jar ファイルを解凍してみましょう。META-INF\MANIFEST.MF ファイルが作成されます。

C:\java>jar xvf JarTest.jar
  META-INF/ が作成されました。
META-INF/MANIFEST.MF が抽出されました。
JarTest.class が抽出されました。
JarTest2.class が抽出されました。

ここで、META-INF\MANIFEST.MF ファイルに次の 1行を追加します。

Manifest-Version: 1.0
Created-By: 1.4.2_04 (Sun Microsystems Inc.)
Main-Class: JarTest

今度は、作成したマニフェストファイルを加えて jar ファイルにまとめます。

C:\java>jar cvfm JarTest.jar META-INF\MANIFEST.MF *.class

今度は実行可能になりました。

C:\java>java -jar JarTest.jar JarTest
Hello!!

リファレンスマニュアルを作る(javadoc)

javadoc コマンドを用いて、ソースコード中に埋めたコメントを用いてリファレンスマニュアルを自動生成することができます。

§JavaDocTest.java
/**
 * javadocコマンドのテスト用クラス。
 * @author 杜甫々
 * @version 1.0
 */
public class JavaDocTest {
    /**
     * 名前
     */
    private String myName;

    /**
     * 名前を設定する。
     * @param name 名前
     */
    public void setName(String name) {
        myName = name;
    }

    /**
     * 名前を返す。
     * @return 名前
     */
    public String getName() {
        return myName;
    }
}

下記のコマンドを実行することで、doc フォルダの下にリファレンスマニュアルを自動生成することができます。

C:\java>javadoc -d doc JavaDocTest.java

クラスを探す(CLASSPATH)

Java で java.lang.String や、myPackage.MyClass などのクラスを使用する場合、コンパイラは、まず、javac コマンドの -classpath オプションで指定されたフォルダから該当のパッケージやクラスを探します。

C:\java>javac -classpath C:\myJavaLib Test.java

-classpath には、フォルダ名の他、jarファイル名、zipファイル名を指定することができます。

C:\java>javac -classpath C:\myJavaLib\MyClass.jar Test.java

複数のフォルダや jarファイルを指定する場合、Windows ではセミコロン(;)、UNIX系OSではコロン(:)で区切ります。

C:\java>javac -classpath C:\dirA;C:\dirB Test.java

-classpath で見つからない場合、環境変数 CLASSPATH で指定されたフォルダや jarファイルを探します。

C:\java>set CLASSPATH=C:\myJavaLib
C:\java>javac Test.java

設定した CLASSPATH 環境変数を解除する場合、次のようにします。

C:\java>set CLASSPATH=

-classpath や CLASSPATH を指定しない場合は、カレントフォルダを探します。

C:\java>dir
2004/07/03  23:38          1,290 MyClass.class

それでも見つからない場合、システム標準のクラスフォルダから、rt.jar や i18n.jar などの標準 jarファイルを探します。

C:\java>dir C:\j2sdk1.4.2_04\jre\lib\rt.jar
2004/06/27  03:29       26,465,083 rt.jar

システムプロパティを参照する(Properties)

Properties を用いて システムプロパティ を参照することができます。

§PropertiesTest.java
import java.util.*;

class PropertiesTest {
    public static void main(String[] args) {
        Properties prop = System.getProperties();
        prop.list(System.out);
    }
}

結果は次のようになります。

-- listing properties --
java.runtime.name=Java(TM) 2 Runtime Environment, Stand...
sun.boot.library.path=C:\Program Files\Java\j2re1.4.2_06\bin
java.vm.version=1.4.2_06-b03
java.vm.vendor=Sun Microsystems Inc.
java.vendor.url=http://java.sun.com/
path.separator=;
java.vm.name=Java HotSpot(TM) Client VM
file.encoding.pkg=sun.io
user.country=JP
sun.os.patch.level=Service Pack 2
java.vm.specification.name=Java Virtual Machine Specification
user.dir=C:\HomePage\java\sample
java.runtime.version=1.4.2_06-b03
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs=C:\Program Files\Java\j2re1.4.2_06\li...
os.arch=x86
java.io.tmpdir=C:\DOCUME~1\田中\LOCALS~1\Temp\
line.separator=

java.vm.specification.vendor=Sun Microsystems Inc.
user.variant=
os.name=Windows XP
sun.java2d.fontpath=
java.library.path=C:\WINDOWS\system32;.;C:\WINDOWS\syst...
java.specification.name=Java Platform API Specification
java.class.version=48.0
java.util.prefs.PreferencesFactory=java.util.prefs.WindowsPreferencesFac...
os.version=5.1
user.home=C:\Documents and Settings\田中
user.timezone=
java.awt.printerjob=sun.awt.windows.WPrinterJob
file.encoding=MS932
java.specification.version=1.4
user.name=田中
java.class.path=.
java.vm.specification.version=1.0
sun.arch.data.model=32
java.home=C:\Program Files\Java\j2re1.4.2_06
java.specification.vendor=Sun Microsystems Inc.
user.language=ja
awt.toolkit=sun.awt.windows.WToolkit
java.vm.info=mixed mode
java.version=1.4.2_06
java.ext.dirs=C:\Program Files\Java\j2re1.4.2_06\li...
sun.boot.class.path=C:\Program Files\Java\j2re1.4.2_06\li...
java.vendor=Sun Microsystems Inc.
file.separator=\
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport...
sun.cpu.endian=little
sun.io.unicode.encoding=UnicodeLittle
sun.cpu.isalist=pentium i486 i386

http://www.tohoho-web.com/java/other.htm
初版:2004年6月26日、最終更新:2004年7月3日
[戻る] [前に] [次に]