![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
Java超初心者です。
Eclipseで TOMCATを使えるようにするため、
TOMCATプラグインツールをダウンロードし、TOMCATを起動してみたのですが、
log4j:WARN No appenders could be found for logger (org.apache.commons.digester.Digester).
log4j:WARN Please initialize the log4j system properly.
というエラーが出ます。
TOMCATを起動しますというメッセージは出て、起動しているとは思うのですが、
その後の日付表示などが全く出ないので、何か問題があるように思います。
log4jのインストールもしていますが、それが何か影響をあたえているのかがわかりません。
いろいろ調べてみてクラスパスの設定がよくないのかも?とも思うのですが、
そもそも環境変数とクラスパスの違いがよくわからないので、手のつけようがありません><
関連する(と思われる)環境変数は以下の通りです。
CLASSPATH : C:\jakarta-log4j-1.2.8\dist\lib\log4j-1.2.8.jar
LOG4J_HOME : C:\jakarta-log4j-1.2.8
JAVA_HOME : c:j2sdk1.4.2_07;
わかりづらい質問だと思いますが、どうか宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
クラスパスについて、少し混乱されているようなので簡単に説明させていただきます。
クラスパスとは、一言でいうと、jvmが実行時に読み込みを行うクラスが置いてあるパスです。
ただ、Webアプリケーションを開発されている場合、このクラスパスには2種類あると思ってください。
1.アプリケーションサーバ実行のためのクラスパス
アプリケーションサーバ(Tomcat)は、それ自体がjavaプログラムですので、その実行に際して読み込むクラスをクラスパスから読み込みます。
この場合、環境変数CLASSPATHで定義されているクラスパスを読み込みます。
2.Webアプリケーションが読み込むクラスパス
Tomcat上で動くWebアプリケーションも当然javaプログラムですので、実行時に読み込むクラスをクラスパスから読み込みます。
その際、1で読み込まれたクラスパスに加えて、各Webアプリケーションのルートディレクトリ($TOMCAT_HOME/webapps/test_appli/)の下の「WEB-INF/classes」以下を、アプリ固有のクラスパスとして動的にクラスパスへ追加して読み込むと思ってください。
(正確にはこれらに加えて、「1.5.Webコンテナが読み込むクラスパス」というのもあるのですが、それはまた別の機会に・・・)
で、本件ですが、結論からいうと環境変数で設定されているCLASSPATH上に「log4j.properties」を配置しても問題なく動作するはずです。
ただ、各Webアプリケーションで使用されるクラスは各Webアプリケーションのクラスパス上に配置すべきです。(もし環境変数のほうのクラスパスに配置すると、全てのWebアプリケーションで共通のlog4j設定を使用することになり、好ましくありません。稼動しているサービスと開発/デバック中のサービスで同じログを吐くのはありえませんよね?)
「log4j.properties」配置するのは、log4jを使用したいWebアプリのルート($TOMCAT_HOME/webapps/test_appli/)以下の「WEB-INF/classes」以下です。Tomcatに複数アプリケーションがある場合は、面倒でもそれぞれに配置してください。
オーケーでしょうか?
この回答への補足
ありがとうございましたm(_)m
shizさんのおっしゃるとおり、クラスパスというのを誤って理解しておりました・・・
今まで環境変数のCLASSPATH=クラスパスだと思い込んでいたところが
あったのですが、厳密にはそうではないんですね。
勉強不足で申し訳ありません。
このことを理解したらやっと
「classパスの通っているディレクトリに配置する」ということが理解できました☆
ありがとうございました。
補足に引き続いて、上記のエラーについてですが、
「log4j.properties」Webアプリのルート下のWEB-INF/classes下に配置したところ、エラーが消えました!!
本当にありがとうございました。
ほんとうにとても丁寧に答えてくださって、すごくわかりやすかったです。
まだまだ勉強中なので、これからもお世話になることがあるかもしれませんが、
そのときはどうぞよろしくお願いいたします。
ありがとうございましたo(^-^o)(o^-^)o
No.1
- 回答日時:
エラーの内容は、「log4jを初期化しようとしてるんだけど、設定が正しくされていないので起動できない」というものです。
log4jをアプリで使用しないのであれば無視しても全く問題はないのですが、log4jを使いたいor気持ち悪いのであれば、log4jの設定を行ってあげる必要があります。
具体的には、log4j.propertiesという設定ファイルをclassパスの通っているディレクトリ(WEB-INF/classes 直下とか)に配置してあげればOKです。
その際、log4j.propertiesファイルの内容は、
------
log4j.rootCategory=DEBUG, A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
------
などとすれば、とりあえずWARNINGは出力されなくなると思います。
log4j.propertiesファイルの詳しい記述方法、またlog4jの使い方については、参考URLのページが詳細で分かりやすいので参考になさってください。
参考URL:http://www.techscore.com/tech/ApacheJakarta/Log4 …
わかりやすい回答ありがとうございました(^o^)
エラーの意味もよくわからなかったので、そういうことなのかぁと納得しました。
しかし、ひとつわからないことが・・・
設定ファイルをクラスパスの通っているディレクトリとあるのですが、
それはどこを指すのでしょうか。
環境変数CLASSPATHのルートの中にあるWEB-INFのことですか??
CドライブにはWEB-INF/classesというファイル(?)がたくさん
あって配置すればよいかわかりませんでした><
もし、よろしければ教えていただけると助かります。
何度も申し訳ありません。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP eclipse pleiades phpのインストールについて 1 2023/02/03 17:15
- サーバー 別サーバに構築したApache+Tomcatの連携について 2 2023/03/06 23:23
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- デスクトップパソコン APEX(PC版)が数秒に一度フリーズしてしまいます。 3 2023/01/17 19:45
- Microsoft ASP C#からvbsを実行したい 5 2022/11/24 17:31
- デスクトップパソコン 問題が発生したため、PCを再起動する必要があります。エラー情報を収集しています。自動的に再起動します 5 2022/06/02 11:15
- Windows 10 windows10 22H2アップデートで 3 2022/10/23 10:31
- ビデオカード・サウンドカード ASUSマザー、グラボ2枚刺しで4モニタに制約がある?少し腑に落ちない事象発生・・・ 4 2022/07/21 19:02
- Visual Basic(VBA) VBAのエラーについて 2 2023/08/02 17:46
- その他(ゲーム) Steam版ホグワーツレガシー強制終了(クラッシュ?) 1 2023/06/04 19:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
eclipseでスタックサイズを変更...
-
JAVAにのeclipseに関する質問で...
-
Eclipse(JAVA)のデバッグで他...
-
split関数で区切り文字がない場合
-
「ワークスペースをビルド中」...
-
Javascriptの値をJava(JSP)へ渡...
-
JavaAppletとJavaScriptの違い
-
環境変数設定で
-
NoClassDefFoundError: javax/m...
-
eclipse実行ができない
-
Struts2でアプリが実行できません
-
コミット前の更新データをチェ...
-
Worksheet_Changeが動かない
-
Javaで年月の取得(YYYYMM形式で)
-
jasper.exceptionとは?
-
jarsigner 署名確認について
-
ファイルの指定について
-
Javascriptのパーミッション
-
Eclipseから実行すると画像が読...
-
JUnit コードカバレッジについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
split関数で区切り文字がない場合
-
Javascriptの値をJava(JSP)へ渡...
-
Eclipse(JAVA)のデバッグで他...
-
「ワークスペースをビルド中」...
-
JAVAにのeclipseに関する質問で...
-
eclipseでスタックサイズを変更...
-
jasper.exceptionとは?
-
Javaで年月の取得(YYYYMM形式で)
-
コミット前の更新データをチェ...
-
eclipseのjavaを実行できない
-
Javascriptのパーミッション
-
Worksheet_Changeが動かない
-
Eclipse 実行→Javaアプリケー...
-
javascriptで、style undefined...
-
eclipseで「サーバーで実行」表...
-
エクリプスで実行時、最新クラ...
-
環境変数設定で
-
Struts2でアプリが実行できません
-
Eclipseで実行>Javaアプリケー...
-
Spyder上のPythonでinputが実行...
おすすめ情報