1. ホーム
  2. xml

[解決済み] Eclipseです。log4j.xml 内の log4j.dtd を参照する。

2022-08-18 15:15:45

質問

私は、かなり長い間log4jを使用してきました。そして、私は通常log4j.xmlのトップでこれを使用します(おそらく他の多くの人と同じように、Googleによると、これは次のとおりです。 の方法です)。

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

明らかにこれは動作しているのですが、EclipseはXMLを書くための文脈依存のヘルプを提供しないのです。さらに、常に警告が表示されます。 log4j.dtd . 今、私はこれを修正する方法に興味があります。

いくつかのことを試してみましたが、これらはうまくいきました。

<!DOCTYPE log4j:configuration SYSTEM "jar:file:/path/.m2/repository/log4j/log4j/1.2.14/log4j-1.2.14.jar!/org/apache/log4j/xml/log4j.dtd">
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">

上記からわかるように、私たちはMavenを使用しています。したがって、これを試してみましたが、失敗します。

<!DOCTYPE log4j:configuration SYSTEM "jar:file:${M2_REPO}/log4j/log4j/1.2.14/log4j-1.2.14.jar!/org/apache/log4j/xml/log4j.dtd">

Eclipseは通常、クラスパス変数を扱う方法を知っていますが、なぜこれが機能しないのでしょうか?実行時に参照が機能しないことは知っていますが、どちらも単純な log4j.dtd (私が間違っていなければ) もそうなので、それは問題ではないはずです。

どなたか、この件に光を当てていただけませんか?

どのように解決するのですか?

この質問はすでに回答されていますが、私は少し違った選択肢を提供したいと思います。

<!DOCTYPE log4j:configuration PUBLIC
  "-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">

と似ています。 FrVaBeの回答 と似ていますが、プラス面では、さらなる Eclipse の設定を必要としません (つまり、プロジェクトを他の人と共有している場合、または大規模なチームを持っている場合、心配することが 1 つ減ります)。

しかし、マイナス面は、インターネット接続が必要だということです (少なくとも開発中のある時点では、たとえそれが 1 回だけであったとしても)。