javaライブラリの作成と利用
そういえば,今までライブラリという形できちんと管理していなかったため,ここらへんの基礎知識が皆無
今さらかなり恥ずかしいが,忘れないようにメモ
ライブラリクラスの作成
適当な場所にライブラリを作成する.package文を忘れずに
(./mytools/hoge/Hoge.java)
package mytools.hoge; public class Hoge{ public void printHoge(){ System.out.println("Hoge!"); } }
利用するjavaファイルの作成
このクラスを利用するためには,以下のようなimport文を挿入すればよい.
(./HogeDemo.java)
import mytools.hoge.Hoge; class HogeDemo{ public static void main(String args[]){ Hoge hoge = new Hoge(); hoge.printHoge(); } }
この際,上記のようにjava/javac実行パスからの相対パスが./mytools/hoge/Hoge.classでないとNoClassDefFoundErrorが返ってくる.
classpath環境変数にパスを追加してもよいけれど,いちいち再設定するのが面倒くさい場合,コマンドラインオプションで指定することができる.
% javac -classpath <省略>/mytools/hoge;. HogeDemo.java
クラスパスはセミコロンで区切って複数指定することができる.ここで./を指定しているが,.は通常使用するので環境変数に設定したほうがよろし.
こんな感じで,自分でつくったライブラリを利用できるようになりました.
jarファイルの作成と利用
さぁ,jarライブラリを作成しよう,ということでjarコマンドで作成.
基本的なオプションはtarといっしょ.zオプションがないくらいが違い.
% jar vcf myjar.jar mytools
上記コマンドの意味は,mytoolsディレクトリ以下のライブラリを圧縮して,myjar.jarという名前でひとつにしてしまえ,ということ.
なぜかjarファイルをclasspathで指定すると,javacする際にコンパイル対象のファイルの位置(たいてい.)も同時に指定しなければならない.
% javac -classpath ./myjar.jar;. HogeDemo.java % java -classpath ./myjar.jar;. HogeDemo
これは,ディレクトリ構造のライブラリの場合には起こらない(Windowsコマンドプロンプト使用時)
理由が理解できていないので,後日分析予定.
次回はJavadocの作成方法とアノテーション方法についてメモする予定,と無理やり引きをつくってみる