クラスパス
どんだけ詰まらせるねんとツッコミを入れまくりたくなるクラスパス
どこ指定したらええねん!?
jarファイルとそうでない場合で場合わけが必要
jarファイルの場合は、jarファイルそのものを指定すればよい。これは簡単。
問題はjarファイルでないクラスを指定するとき。
指定する場所
/Users/bi_na/workspace/Sample1/jp/co/my_libに
Hoge.java
package jp.co.my_lib class Hoge { /* 処理 */ }
とある場合、クラスパスには、
/Users/bi_na/workspace/Sample1を指定する。
参考:
クラスパスの設定・具体例 - Java 入門
ビンゴ中西のほげほげ【結論】package宣言とクラスパスの絡み
ビンゴ中西のほげほげ一体全体どういう仕様だ?
覚え方
javacは、欲しいクラスを見つけるために、配下のファイルを(たぶん)覗き見て
クラスパスで指定されたディレクトリにパッケージ名を補完する。
つまり、
クラスパスの値 + import文
という処理を行なう。
javacクラスパス配下のファイルを(たぶん)覗き見て、そのimport文の部分を補うので、
そのファイルがあるところを設定したい気持ちをグッと押さえて、
結構上の方のディレクトリを指定する。
javacの気持ちを優先させてあげよう。
実行時のクラスパスの使われ方
CLASSPATHの役割(ytp.ne.jp)
クラスパスを探索して先に見つかったファイルが使われる。
もやは悲劇。