【发布时间】:2020-02-09 05:58:10
【问题描述】:
我刚刚学习 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)中删除该库,它加载正常。 以下是正在加载的库:
- JDA
- Trove4J
- jsr305
- opus-java
- opus-java-natives
- opus-java-api
- jna
- 注释
- okhttp
- commons-collections4
- nv-websocket-client
- slf4j-api
- 杰克逊数据绑定
- 杰克逊注解
- 杰克逊核心
此外,我已经尝试告诉 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 也是如此。
【问题讨论】: