★★Java質問・相談スレッド143★★
■ このスレッドは過去ログ倉庫に格納されています
0604デフォルトの名無しさん
2011/03/02(水) 09:56:35.41親ローダを差し置いてロードする変則クラスローダを作りたいわけでなく、
そのSimpleLoaderはURLClassLoaderの真似事をさせたいだけじゃないか?
クラス検索を最初に親に任せる基本手順(findSystemClassの辺り)は行わせるようにしないとやっかいなことになる。
そして多分SimpleLoaderのターゲットであろうSpeciallyLoadedClassクラスだけをクラスパスの通っていない場所に置く。
LoadedClassクラスはLoaderMainでも使用している公開のインタフェイスなのでクラスパスを通す必要がある。
例えば、
C:\hoge\LoaderMain.java
C:\hoge\SimpleLoader.java
C:\hoge\loaderClasses\LoadedClass.java
C:\hoge\loaderClasses\SpeciallyLoadedClass.java
のように配置しておきC:\hogeをカレントディレクトリにしてコンパイルする。
javac LoaderMain.java loaderClasses\SpeciallyLoadedClass.java
その後、SpeciallyLoadedClass.classだけを、
C:\moga\loaderClasses\SpeciallyLoadedClass.class
のようにクラスパスの通っていない場所(C:\moga)にloaderClassesディレクトリを作って移動しておき、
java LoaderMain C:\moga
のようにすれば、
Class file: C:\moga\loaderClasses\SpeciallyLoadedClass.class
File size: xxx
loaded : class loaderClasses.SpeciallyLoadedClass
doIt: Hello from loaderClasses.SpeciallyLoadedClass
loaded : loaderClasses.SpeciallyLoadedClass
のように出力されて、パスが通っていないSpeciallyLoadedClassクラスがSimpleLoader自身によってロードされる。
コンパイルはSpeciallyLoadedClassのソースを最初からC:\moga\loaderClasses\SpeciallyLoadedClass.javaに置いて、
javac LoaderMain.java C:\moga\loaderClasses\SpeciallyLoadedClass.java
ならクラスファイルを移動する手間が省ける。
何クラスを自作ローダでロードしたいのか辺りがはっきりしないのでこれでいいか分からんが。
■ このスレッドは過去ログ倉庫に格納されています