May 15, 2006

[Misc] ClassLoader に関する参考資料をメモ

未だに ClassLoader を実装するとハマることがある。 何年実装やっているんだ・・・orz というわけで、ClassLoader に関する再勉強の必要性を強く感じて参考資料を集めてみた。

JSR 924: Java Virtual Machine Specification
http://www.jcp.org/en/jsr/detail?id=924
The Java Virtual Machine Specification Second Edition
http://java.sun.com/docs/books/vmspec/2nd-edition/html/VMSpecTOC.doc.html
Java2 Platform SE 5.0 API Document - java.lang.ClassLoader
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/ClassLoader.html
The Apache Tomcat 5.5 Servlet/JSP Container Class Loader HOW-TO
http://tomcat.apache.org/tomcat-5.5-doc/class-loader-howto.html
developerWorks - クラス・ローディングとデバッグ・ツール
http://www-06.ibm.com/jp/developerworks/java/060113/j_j-dclp1.shtml
developerWorks - クラス・ローディングに関する基本的な例外
http://www-06.ibm.com/jp/developerworks/java/060127/j_j-dclp2.shtml

ちなみに、今回ハマった状況はこういうもの。 「class A extends B」というクラスをロードする。 B をシステム ClassLoader がロード、A を自作 ClassLoader がロード。 特定環境下で 「A.class.getSuperclass」 が何故か java.lang.Object を返してくるという問題が発生。 結局のところ、ClassLoader の階層構造にミスがあったのだけれど、発生する環境としない環境があって結構手こずった。

教訓 - ClassLoader の階層構造はきちんと把握しよう。

Posted in Misc | このエントリーをはてなブックマークに追加 | この記事をクリップ! livedoor クリップ |