Tomcat JAR 扫描程序尝试扫描 apache-tomcat/lib/lib/ 中的 JAR

问题描述 投票:0回答:1

我将从 6.0.44 升级到 Apache Tomcat 8.5.15。当我启动 Web 服务器并部署 Web 应用程序时,我收到来自

org.apache.tomcat.util.scan.StandardJarScanner.scan
的大量警告,其中包含以下消息

Failed to scan [file:/path/to/apache-tomcat/lib/lib/tomcat-jaspic-api-8.5.15.jar] from class loader hierarchy
  java.io.FileNotFoundException: /path/to/apache-tomcat/lib/lib/tomcat-jaspic-api-8.5.15.jar (No such file or directory)

我不明白为什么扫描仪要在

apache-tomcat/lib
内部查找另一个名为
lib
的目录,该目录不存在。我的
CATALINA_HOME
设置为
/path/to/apache-tomcat
并且
common.loader
中的
catalina.properties
属性设置为默认值:

common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar"

我知道可以安全地忽略该警告,而不会影响 Web 应用程序,并且我可以在 apache-tomcat/conf/context.xml

 中关闭 JAR 扫描,但我仍然想知道 lib/lib
 奇怪现象背后的原因。

tomcat tomcat8
1个回答
0
投票
您有一个带有 META-INF/MANIFEST.MF 的库,其中包含相对类路径。

查看正在扫描的每个库,从 Tomcat 的 lib/ 目录中的库开始,尤其是您可能添加的非默认库。检查每个 MANIFEST.MF 中的类路径条目,包括缺少的库之一,例如“lib/tomcat-jaspic-api-8.5.15.jar”

lib/badlibs.jar

Class-Path: lib/notthere.jar lib/missing.jar
在我的例子中,一个旧的本地开发的库位于 $CATALINA_BASE/lib 中,具有以下类路径:

Class-Path: lib/servlet-api.jar lib/juli-6.0.26.jar lib/catalina.jar
导致错误:

StandardJarScanner.processURLs Failed to scan [file:${catalina.base}/lib/lib/juli-6.0.26.jar] from classloader hierarchy
需要进行一些代码清理。

© www.soinside.com 2019 - 2024. All rights reserved.