プロが教えるわが家の防犯対策術!

こんにちは。三田と申します。

Class#forName()で取得したClassオブジェクトが、Servlet上とそうでない場合で結果が違っていました。

実際、行っている処理は、あるクラスのClassオブジェクトをClass#forName()で取得して、次にそのクラスのインスタンスを生成して、Class#isInstance()をしているだけです。

上記の処理を行った場合に、Servlet上ではfalseで
そうでない場合は、trueになるのです。

デバックしてみたところ、インスタンスを生成したときにServlet上では、Classオブジェクトの変数に値が入っていないのに対し、Servletを使用しない場合は、Classオブジェクトの変数に値が入っていました。

その違いは発見したのですが、なぜそうなるのかがわかりません。理由を知っている方がいらっしゃいましたら、ぜひご教授をお願いします。

以上、よろしくお願いします。

A 回答 (1件)

> 実際、行っている処理は、あるクラスのClassオブジェクトをClass#forName()で取得して、次にそのクラスのインスタンスを生成して、Class#isInstance()をしているだけです。


> 上記の処理を行った場合に、Servlet上ではfalseで
そうでない場合は、trueになるのです。

私の環境ではServlet上でもtrueになりました。
何か他の原因ではないでしょうか?
    • good
    • 0
この回答へのお礼

torakiyojpさん、回答ありがとうございます。

原因は、必要なライブラリを配置していなかったためでした。そのため、参照しているクラスローダが違い、falseになっていました。初歩的な設定ミスでした。

お礼日時:2004/09/27 10:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!