Tomcat 不是在 JAR 中扫描 JAR
Tomcat Isn't Scanning JARs Within JARs
我有两个 Web 应用程序(比如 A.war 和 B.war),它们依赖于一些通用代码(比如 C.jar)来交换信息。所以我在两个 webapps 的 POM 文件中做了什么,我添加了范围为 "provided".
的 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,但从来没有这么详细。任何帮助将不胜感激。
我在 Tomcat 的 context.xml 中将 JARScanner 下的 scanManifest 设置设置为 true。我将其设置为 false,错误消失了。
<JarScanner scanAllDirectories="true" scanAllFiles="true" scanBootstrapClassPath="true" scanClassPath="true" scanManifest="false" />
对于嵌入式 tomcat(在 spring 或 spring 引导中)添加 属性
server:
tomcat:
additional-tld-skip-patterns: "*.jar"
或准确定义文件名logback-classic-1.1.3.jar
我有两个 Web 应用程序(比如 A.war 和 B.war),它们依赖于一些通用代码(比如 C.jar)来交换信息。所以我在两个 webapps 的 POM 文件中做了什么,我添加了范围为 "provided".
的 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,但从来没有这么详细。任何帮助将不胜感激。
我在 Tomcat 的 context.xml 中将 JARScanner 下的 scanManifest 设置设置为 true。我将其设置为 false,错误消失了。
<JarScanner scanAllDirectories="true" scanAllFiles="true" scanBootstrapClassPath="true" scanClassPath="true" scanManifest="false" />
对于嵌入式 tomcat(在 spring 或 spring 引导中)添加 属性
server:
tomcat:
additional-tld-skip-patterns: "*.jar"
或准确定义文件名logback-classic-1.1.3.jar