- PR -

アプレット起動時のNullPointerException

1
投稿者投稿内容
myrose
常連さん
会議室デビュー日: 2005/08/09
投稿数: 24
投稿日時: 2005-11-21 16:56
こんにちは。

アプレットを勉強し始め、いきなり躓きましたので質問します。

Eclipse3.0を使っているのですが、HTMLでアプレットを読み込ませることが出来ません。
NullPointerExceptionや、ClassNotFoundExceptionが表示されてしまいます。
例えば、WEB-INF/rensyuパッケージに入っているクラスを呼ぶ場合、
HTMLのCODEBASEではどのように書けばいいのでしょうか?

私はCODEBASE="/rensyu/" "../rensyu/" "rensyu/" "/rensyu"を試したのですが、
他に思いつきません。

ちなみに、DOSでコンパイルして、同じフォルダで読み込ませた場合は出来ました。
その場合はCODEBASEははずしてあります。

よろしくお願いします。

uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-11-21 17:06
「WEB-INF/rensyuパッケージ」というのが何を指しているのかわかりませんが、アプレットの
クラスファイルはWEB-INF以下に入れてはいけません。なぜかというと、Webサーバから見た
場合、アプレットクラスファイルは静的コンテンツの一種であり、WEB-INF以下はそのような
静的コンテンツは配置できない(配置してもアクセスできない)からです。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-11-21 17:38
WebLogic Server であれば ClassPathServlet というのを使って WEB-INF/classes,lib 以下のクラスを配信することができます。
http://edocs.beasys.co.jp/e-docs/wls/docs81/applets/usingapplets.html
具体的には
コード:
<APPLET CODE="GraphApplet"
  CODEBASE="/bea_wls_internal/classes/appName@componentName" >


とか書きます。
もちろんこれは WLS の独自機能なので、他のサーバを使っている場合は WEB-INF 以外にクラスやjarを配置してやるか、WLS の ClassPathServlet 的な物を用意するか、設定してやる必要があります。
myrose
常連さん
会議室デビュー日: 2005/08/09
投稿数: 24
投稿日時: 2005-11-21 17:52
ご返答、どうもありがとうございます。

今私はTomcatですのでWEB-INFの下には置けないということですね。
EclipseのTomcatプロジェクトを使っていたので、他でやったほうがいいのかもしれません。

しかし、DOSのJAVACでコンパイルしたクラスをHTMLと同じディレクトリに配置した場合は、上手くいくのですが、その下にrensyuフォルダを作って、そこにクラスを置いた場合もnullpointerExceptionになるのはなぜなのでしょうか?

CODEBASEはどうするのが正しいのでしょうか?相対パスで出来ると、どこかに書いてあったのですが。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-11-21 19:33
ClassNotFoundException はクラスが見つからないという例外ですが、NullPointerException は大抵アプレットやアプリケーションの実行時に発生するものです。
Codebase は関係ないのではないでしょうか。
スタックトレースより、NPE が発生している行数を調べて、扱っているオブジェクトがどうして null になっているのか見つけましょう。
myrose
常連さん
会議室デビュー日: 2005/08/09
投稿数: 24
投稿日時: 2005-11-21 20:22
ありがとうございます。NullPointerExceptionの原因をまず探してみます。
1

スキルアップ/キャリアアップ(JOB@IT)