首页 > 解决方案 > 某些库导致Tomcat部署失败

问题描述

我刚刚学习 Tomcat,并已成功将一个简单的测试 WAR 部署到 Tomcat 服务器。但是,当我尝试通过 Maven 添加库时,Tomcat 的 JarScanner 无法为我的程序加载类文件,说它找不到任何东西

09-Feb-2020 05:36:42.568 INFO [http-nio-80-exec-8] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/opt/tomcat/apache-tomcat-9.0.30/webapps/api.war]
09-Feb-2020 05:36:42.668 FINE [http-nio-80-exec-8] org.apache.jasper.servlet.TldScanner.scanResourcePaths No TLD files were found in resource path [/WEB-INF/].
09-Feb-2020 05:36:42.686 INFO [http-nio-80-exec-8] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/opt/tomcat/apache-tomcat-9.0.30/webapps/api.war] has finished in [117] ms

但是,如果我从 pom.xml (因此从 WAR)中删除该库,它加载正常。以下是正在加载的库:

此外,我已经尝试告诉 JARScanner 不要扫描 context.xml 和 catalina.properties 中的任何 JAR 文件。

tomcat.util.scan.StandardJarScanFilter.jarsToSkip=\
*.jar
<JarScanner scanClassPath="false" scanAllDirectories="false" scanManifest="false" scanAllFiles="false"/>

这些都没有导致部署工作。如果我不排除主库 (JDA),则 Tomcat 会报告 ArrayIndexOutOfBounds 异常。服务器在 JDK 8 上运行 Tomcat 9,我的 IDE 也是如此。

标签: javamaventomcat

解决方案


从您的日志片段中 - 似乎没有部署 WAR,实际上是(参见第三行):Deployment of web application archive [/opt/tomcat/apache-tomcat-9.0.30/webapps/api.war] has finished in [117] ms

尝试将此输出与您认为“已部署”的 WAR 输出进行比较,您可能会看到相同的消息(我现在没有 tomcat 来在我的机器上验证这一点,但这是我的假设)。

第二行:No TLD files were found in resource path...基本上意味着WAR中没有TLD文件这当然并不意味着战争有错误......

TLD 代表标记库描述符 - 它用于 JSP 标记,它不是 Web 档案中的强制组件。

请参阅此处有关 TLD 的一些信息


推荐阅读