### その他

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

#### ■ コマンドライン引数を参照する（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

#### ■ 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日
[戻る] [前に] [次に]