- - PR -
アプレット起動時のNullPointerException
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-11-21 16:56
こんにちは。
アプレットを勉強し始め、いきなり躓きましたので質問します。 Eclipse3.0を使っているのですが、HTMLでアプレットを読み込ませることが出来ません。 NullPointerExceptionや、ClassNotFoundExceptionが表示されてしまいます。 例えば、WEB-INF/rensyuパッケージに入っているクラスを呼ぶ場合、 HTMLのCODEBASEではどのように書けばいいのでしょうか? 私はCODEBASE="/rensyu/" "../rensyu/" "rensyu/" "/rensyu"を試したのですが、 他に思いつきません。 ちなみに、DOSでコンパイルして、同じフォルダで読み込ませた場合は出来ました。 その場合はCODEBASEははずしてあります。 よろしくお願いします。 | ||||
|
投稿日時: 2005-11-21 17:06
「WEB-INF/rensyuパッケージ」というのが何を指しているのかわかりませんが、アプレットの
クラスファイルはWEB-INF以下に入れてはいけません。なぜかというと、Webサーバから見た 場合、アプレットクラスファイルは静的コンテンツの一種であり、WEB-INF以下はそのような 静的コンテンツは配置できない(配置してもアクセスできない)からです。 | ||||
|
投稿日時: 2005-11-21 17:38
WebLogic Server であれば ClassPathServlet というのを使って WEB-INF/classes,lib 以下のクラスを配信することができます。
http://edocs.beasys.co.jp/e-docs/wls/docs81/applets/usingapplets.html 具体的には
とか書きます。 もちろんこれは WLS の独自機能なので、他のサーバを使っている場合は WEB-INF 以外にクラスやjarを配置してやるか、WLS の ClassPathServlet 的な物を用意するか、設定してやる必要があります。 | ||||
|
投稿日時: 2005-11-21 17:52
ご返答、どうもありがとうございます。
今私はTomcatですのでWEB-INFの下には置けないということですね。 EclipseのTomcatプロジェクトを使っていたので、他でやったほうがいいのかもしれません。 しかし、DOSのJAVACでコンパイルしたクラスをHTMLと同じディレクトリに配置した場合は、上手くいくのですが、その下にrensyuフォルダを作って、そこにクラスを置いた場合もnullpointerExceptionになるのはなぜなのでしょうか? CODEBASEはどうするのが正しいのでしょうか?相対パスで出来ると、どこかに書いてあったのですが。 | ||||
|
投稿日時: 2005-11-21 19:33
ClassNotFoundException はクラスが見つからないという例外ですが、NullPointerException は大抵アプレットやアプリケーションの実行時に発生するものです。
Codebase は関係ないのではないでしょうか。 スタックトレースより、NPE が発生している行数を調べて、扱っているオブジェクトがどうして null になっているのか見つけましょう。 | ||||
|
投稿日時: 2005-11-21 20:22
ありがとうございます。NullPointerExceptionの原因をまず探してみます。
|
1