- 締切済み
Servlet上でのClass#forName()について
こんにちは。三田と申します。 Class#forName()で取得したClassオブジェクトが、Servlet上とそうでない場合で結果が違っていました。 実際、行っている処理は、あるクラスのClassオブジェクトをClass#forName()で取得して、次にそのクラスのインスタンスを生成して、Class#isInstance()をしているだけです。 上記の処理を行った場合に、Servlet上ではfalseで そうでない場合は、trueになるのです。 デバックしてみたところ、インスタンスを生成したときにServlet上では、Classオブジェクトの変数に値が入っていないのに対し、Servletを使用しない場合は、Classオブジェクトの変数に値が入っていました。 その違いは発見したのですが、なぜそうなるのかがわかりません。理由を知っている方がいらっしゃいましたら、ぜひご教授をお願いします。 以上、よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- torakiyojp
- ベストアンサー率58% (25/43)
回答No.1
> 実際、行っている処理は、あるクラスのClassオブジェクトをClass#forName()で取得して、次にそのクラスのインスタンスを生成して、Class#isInstance()をしているだけです。 > 上記の処理を行った場合に、Servlet上ではfalseで そうでない場合は、trueになるのです。 私の環境ではServlet上でもtrueになりました。 何か他の原因ではないでしょうか?
お礼
torakiyojpさん、回答ありがとうございます。 原因は、必要なライブラリを配置していなかったためでした。そのため、参照しているクラスローダが違い、falseになっていました。初歩的な設定ミスでした。