クラス・ライブラリの作り方と使い方
1) ライブラリにしたいプログラム(クラス)をディレクトリ構造(カレント・ディレクトリの下)を作ってそこに置く.
2) 全てのプログラムをコンパイルする.
3) 以下の命令を実行
jar cf myjar.jar ディレクトリ構造のルート
myjar.jarというファイルがライブラリになる
4) myjar.jarを適当な場所に置く.
例えばC:¥
5) C:¥myjar.jarを環境設定のCLASSPATHに書き、必要であれば”.;”を追加する.
例題で説明します。
今から作るライブラリには以下の四つのクラスがある。ただし、最初の三つをライブラリとし、4番目のクラスは作ったライブラリをテスト的に使うクラスである。
1) Abst_Class1(パッケージmylib.abst_class1の中)
Class1の親クラス
コンストラクタAbst_Class1がある
2) Class1(パッケージmylib.class1の中)
メソッド show1, show2がある
コンストラクタ Class1があり
Abst_Class1をcallする
3) Seisuu(パッケージmylib.seisuuの中)
static メソッドwaがある.
4) Proo16_1(namelessパッケージの中)
mainメソッドがある
Class1, Abst_Class1などを使う
Seisuuクラスのメソッドwaを使う。
図Package_treeは以上を図示したものである。以下にそれぞれのクラスのソースを示す。
Abst_Class1.java
package mylib.abst_class1; interface inter1{ void show1(); void show2(); } public abstract class Abst_Class1 implements inter1 { private int num1; protected Abst_Class1(int n){this.num1=n;} public void show1(){ System.out.println("show1 num1=" + num1 ); } public abstract void show2(); }
説明:
1行 パッケージ名
2行 inter1にはメソッドが二つある。
10行 コンストラクタAbst_Class1は別パッケージの子クラスから使われるのでprotectedにしてある。
Class1.java
package mylib.class1; import mylib.abst_class1.*; public class Class1 extends Abst_Class1 { private String s1; public Class1(int n, String s){ super(n); this.s1 = s; } public void show2(){ show1(); System.out.println("show2 s1="+s1); } }
説明:
2行 このクラスは パッケージmylib.abst_class1を使う。
6行 親クラスのコンストラクタを使っている。
Seisuu.java
package mylib.seisuu; public class Seisuu{ public static int wa(int m, int n){ int s=0; for(int i=m;i<=n;i++){ s+=i; } return s; } }
説明:
1,2行 Seisuuクラスはmylib.seisuuパッケージにある。
3行 メソッドwaはstaticである。
Proo16_1.java
import mylib.abst_class1.*; import mylib.class1.*; import mylib.seisuu.*; class Proo16_1{ public static void main(String args[]){ Abst_Class1 f1 = new Class1(1, "Tokyo"); f1.show2(); System.out.println("Seisuu.wa(1,10)="+Seisuu.wa(1,10)); } } /* 出力 show1 num1=1 show2 s1=Tokyo Seisuu.wa(1,10)=55 */
説明:
1,3行 三つのパッケージをimport
8行 メソッドwaはSeisuuクラスのクラスメソッドである。
それぞれのクラスをコンパイルするには
>javac mylib\abst_class1\Abst_Class1.java
>javac mylib\class1\Class1.java
>javac mylib\seisuu\Seisuu.java
>javac Proo16_1.java
実行:
>java Proo16_1
show1 num1=1
show2 s1=Tokyo
Seisuu.wa(1,10)=55