Tomcat不扫描JAR中的JAR

时间:2019-10-25 09:55:51

标签: java maven tomcat web-applications tomcat9

我有两个WebApp(例如A.war和B.war)依赖某些通用代码段(例如C.jar)来交换信息。因此,我在两个webapps的POM文件中所做的事情,添加了范围为“提供”的JAR。

<dependency>
    <groupId>some.web.app</groupId>
    <artifactId>C</artifactId>
    <version>${project.version}</version>
    <type>jar</type>
    <scope>provided</scope>
</dependency>

然后我将C.jar复制到了Tomcat的lib文件夹中,以便可以共享它。因此,当我尝试部署任何war文件时,通过将war文件复制到webapps文件夹并启动Tomcat,启动时会看到一堆丢失的JAR错误:

25-Oct-2019 15:07:43.752 WARNING [main] org.apache.tomcat.util.scan.StandardJarScanner.processURLs Failed to scan [file:/H:/apache-tomcat-9.0.27/lib/logback-classic-1.1.3.jar] from classloader hierarchy
    java.io.FileNotFoundException: H:\apache-tomcat-9.0.27\lib\logback-classic-1.1.3.jar (The system cannot find the file specified)
        at java.util.zip.ZipFile.open(Native Method)
        at java.util.zip.ZipFile.<init>(ZipFile.java:225)

但是Tomcat抱怨的所有JAR都位于C.jar的“ lib”文件夹中。有没有一种方法可以使Tomcat扫描C.jar中的JAR。我不确定我在做什么首先是否正确。我以前玩过Tomcat / Maven,但从未详细介绍过。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我在Tomcat的context.xml中将JARScanner下的scanManifest设置设置为true。我将其设置为false,错误消失了。

<JarScanner scanAllDirectories="true" scanAllFiles="true" scanBootstrapClassPath="true" scanClassPath="true" scanManifest="false" />