• 締切済み

Servlet上でのClass#forName()について

こんにちは。三田と申します。 Class#forName()で取得したClassオブジェクトが、Servlet上とそうでない場合で結果が違っていました。 実際、行っている処理は、あるクラスのClassオブジェクトをClass#forName()で取得して、次にそのクラスのインスタンスを生成して、Class#isInstance()をしているだけです。 上記の処理を行った場合に、Servlet上ではfalseで そうでない場合は、trueになるのです。 デバックしてみたところ、インスタンスを生成したときにServlet上では、Classオブジェクトの変数に値が入っていないのに対し、Servletを使用しない場合は、Classオブジェクトの変数に値が入っていました。 その違いは発見したのですが、なぜそうなるのかがわかりません。理由を知っている方がいらっしゃいましたら、ぜひご教授をお願いします。 以上、よろしくお願いします。

みんなの回答

回答No.1

> 実際、行っている処理は、あるクラスのClassオブジェクトをClass#forName()で取得して、次にそのクラスのインスタンスを生成して、Class#isInstance()をしているだけです。 > 上記の処理を行った場合に、Servlet上ではfalseで そうでない場合は、trueになるのです。 私の環境ではServlet上でもtrueになりました。 何か他の原因ではないでしょうか?

thunder2
質問者

お礼

torakiyojpさん、回答ありがとうございます。 原因は、必要なライブラリを配置していなかったためでした。そのため、参照しているクラスローダが違い、falseになっていました。初歩的な設定ミスでした。

関連するQ&A