web-dev-qa-db-ja.com

JSPコンパイラの警告を修正する方法:1つのJARでTLDがスキャンされましたが、TLDが含まれていませんでしたか?

Tomcat 7 Jasperは、アプリケーションを起動するとき、またはantを介してJSPをコンパイルするときに、余分なJARファイルまたは置き忘れたJARファイルについて文句を言います。私はメッセージの下に行きました

**compile-jsp:**
   [jasper] Jul 31, 2012 7:15:15 PM org.Apache.jasper.compiler.TldLocationsCache tldScanJar
   [jasper] INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. 

スキャン中に不要なJARをスキップする方法は、Tomcatの起動時間とJSPコンパイル時間を改善できますか?

より良い出力を可能にする方法は?

51
gowthaman

Tomcat 8の場合、ログに表示するためにTomcatによってスキャンされたjarのTomcat/conf/logging.propertiesに次の行を追加する必要がありました。

org.Apache.jasper.servlet.TldScanner.level = FINE
41
Guno Heitman

Tomcat 8.5。/confディレクトリセットにあるcatalina.properties内:

Tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\*.jar

または、Tomcatの/ confディレクトリにあるcontext.xmlに移動して、次を追加します。

<JarScanner scanClassPath="false"/>
41

上記の解決策は私にはうまくいきませんでした。代わりに、logging.propertiesファイルの最後の行からハッシュ(#)を削除して、機能するようにしました。

# To see debug messages in TldLocationsCache, uncomment the following line:
org.Apache.jasper.compiler.TldLocationsCache.level = FINE

次のステップは、次の行の直後に、catalina.propertiesファイルでTomcat 7が探しているjarを追加することです。

org.Apache.catalina.startup.TldConfig.jarsToSkip=
15
skiabox

それが誰かを助けるなら、私は既存のorg.Apache.catalina.startup.TldConfig.jarsToSkip=エントリに以下の出力ファイルの内容を追加しました。

/var/log/Tomcat7/catalina.outはTomcatログの場所です。

egrep "No TLD files were found in \[file:[^\]+\]" /var/log/Tomcat7/catalina.out -o | egrep "[^]/]+.jar" -o | sort | uniq | sed -e 's/.jar/.jar,\\/g' > skips.txt

お役に立てば幸いです。

10
Joseph Lust

TomcatはすべてのJarでTLD(ライブラリ定義のタグ付け)をスキャンするため、警告が表示されます。

Step1:どのJARがこの警告をスローしているかを確認するには、Tomcat/conf/logging.propertiesに次の行を挿入します

org.Apache.jasper.servlet.TldScanner.level = FINE

これで、どのJARが初期警告を引き起こしているかの詳細を示す警告を見ることができるはずです。

Step2スキャン中に不要なJARをスキップすると、起動時間とJSPコンパイル時間が改善されるため、catalina.propertiesファイル内の不要なJARをスキップします。ここには2つのオプションがあります-

  1. Tomcat.util.scan.StandardJarScanFilter.jarsToSkipの下にすべてのJARをリストします。しかし、多くのjarがある場合や、jarが変化し続ける場合、これは面倒になります。
  2. あるいはTomcat.util.scan.StandardJarScanFilter.jarsToSkip=*を挿入して、すべてのjarをスキップします

これで上記の警告は表示されなくなり、かなり大きなアプリケーションがある場合は、アプリケーションの展開にかかる時間を大幅に節約できます。

注:Tomcat8でテスト済み

6
HopeKing

この行のコメントを外します(/conf/logging.properties内)

org.Apache.jasper.compiler.TldLocationsCache.level = FINE

作業はTomcat 7.0.5

4
user3585459

Tomcat 8の場合、Tomcatによってスキャンされるjarファイルを防ぐために、catalina.propertiesに次の行を追加する必要がありました。

Tomcat.util.scan.StandardJarScanFilter.jarsToSkip=jsp-api.jar,servlet-api.jar
4
Elcin ABD

上記のいずれも機能しませんでした(Tomcat 7.0.62)... Sensei_Shohが指摘しているように、メッセージの上にクラスが表示され、これをlogging.propertiesに追加します。私のログは:

Jan 18, 2016 8:44:21 PM org.Apache.catalina.startup.TldConfig execute
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.

だから私は追加しました

org.Apache.catalina.startup.TldConfig.level = FINE

conf/logging.propertiesに

その後、非常に多くの「問題のある」ファイルを取得したので、それらをスキップする必要はありませんでした(また、通常のロギングに戻りました...)

3
gkar

エラーメッセージには、使用しているロガーが示されているため、そのロガー.levelを設定します。

[jasper] Jul 31, 2012 7:15:15 PM org.Apache.jasper.compiler.TldLocationsCache tldScanJar

したがって、ロガーはorg.Apache.jasper.compiler.TldLocationsCacheです。 logging.propertiesファイルに、次の行を追加します。

org.Apache.jasper.compiler.TldLocationsCache.level = FINE
1
Sensei_Shoh

ログの余分なエントリが気になるが、起動時間が1秒長くならない場合は、これをlogging.propertiesに追加して忘れてください。

org.Apache.jasper.servlet.TldScanner.level = WARNING
0
Alex R