- - PR -
@IT記事「クラスローダの仕組みを知る」について
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-05-11 10:33
2004/5/11公開のJava Tips「クラスローダの仕組みを知る」において、
Webアプリケーションサーバのクラスローダの仕組みが Tomcat 5の実例を元に解説されています。 このあたりははまる人が多いところなので、こういった解説記事があると 他人に説明しやすくなり助かります。 ただ、上記の記事でおかしいと思う点がありました。それは、クラスローダ System に関する説明です。件の記事には以下のように書いてあります。 | System 環境変数CLASSPATHに設定されているクラス 確かにJakartaのサイトにあるクラスローダに関するドキュメントには 以下のように書いてあり、一見正しいように思えます。 | System - This class loader is normally initialized from the contents of the | CLASSPATH environment variable. ですが、その後にはさらに以下のように書いてあります。 | However, the standard Tomcat 5 startup scripts | ($CATALINA_HOME/bin/catalina.sh or %CATALINA_HOME%\bin\catalina.bat) | totally ignore the contents of the CLASSPATH environment variable itself, このように、「環境変数CLASSPATHの内容を無視する」と書いてあります。 実際、初心者が陥りやすいトラブルとして「jarファイルを環境変数CLASSPATHに 追加したのにClassNotFoundExceptionが発生する」というものを頻繁に見かけます。 件の記事の内容ですと、このトラブルの対策になるどころか誘発してしまいかねません。 閲覧者の多い@ITの、特に入門者向けの記事ですので、早めに修正した方がいいのでは ないでしょうか。 | ||||
|
投稿日時: 2004-05-11 14:05
記事自体はクラスローダについてです。
その観点から言うと、間違ったことは言っていないですよね。 事実、Tomcat は CLASSPATH 環境変数を元に System クラスローダを 作成しています。 しかしその CLASSPATH 環境変数を設定しているのは、Tomcat のアーカイブに 同梱されている起動スクリプトで、このスクリプトが、ユーザが設定した CLASSPATH 環境変数を上書きしています。 という事で、Tomcat がユーザが設定した CLASSPATH 環境変数を 無視するのは、クラスローダそのものとは無関係です。 しかし、この記事のみを見て誤解する人は居ると思うので、 記事に追記する事は反対しません。 | ||||
|
投稿日時: 2004-05-11 20:01
そのとおりでした。クラスローダの説明という意味ではおかしくはありませんね。 | ||||
1
