2011年7月14日木曜日

red5をapplet化してみる。その2

applet化する上でGUIっぽく動作させる必要があるわけですが、そのためにRed5のプログラムを改造していました。

基本的にBootstrapでやってることをGUI経由で実行することで必要な動作ができる・・・みたいなものをつくれば十分なのですが、やってみたところどうもクラスの読み込みがおかしい・・・ClassLoaderがこわれてる?という状況に陥りました。

というわけでクラスローダーのhashCodeを取得する方法です。
現在のThreadのClassLoaderのHashCodeの取得の仕方
Thread.currentThread().getContextClassLoader().hashCode();

現在のクラスの読み込み時のClassLoaderのHashCodeの取得の仕方
this.getClass().getClassLoader().hashCode();

自力でClassLoaderを作成して読み込んだクラスを取得したいときに、ベースとなっているClassLoaderがおかしいと自力で読み込んだクラスのデータが見えなくなってしまい動作できなくなってしまうという現象がおこり、30分くらいはまっていました・・・

みなさんもClassNotFoundException等に悩まされた場合は、実行スレッドのClassLoaderといま利用しているクラスのClassLoaderが違ってない?というのを疑ってみてください。
もしかしたら解決できるかもしれませんよ。

0 件のコメント:

コメントを投稿