war包部署到Tomcat总报错

我将Springboot项目打成war包以后,部署到Tomcat上,当运行startup.bat之后,总是会报
“MEB-INF/lib-provided/中找不到TLD文件”的错误,进而有了“一个或多个筛选器启动失败”这种的报错,有大神知道怎么改吗?
错误日志:

29-May-2020 16:16:09.207 信息 [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 在java.library.path:[C:\Program Files\Java\jdk1.8.0_181\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\ProgramData\DockerDesktop\version-bin;C:\Program Files\Docker\Docker\Resources\bin;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files\nodejs\;C:\Program Files\Microsoft VS Code\bin;C:\Program Files\Java\jdk1.8.0_181\bin;C:\Program Files\Java\jdk1.8.0_181\jre\bin;C:\Users\huang\AppData\Local\Android\Sdk\platform-tools;C:\Users\huang\AppData\Local\Android\Sdk\tools;C:\Program Files\MiKTeX 2.9\miktex\bin\x64\;C:\Program Files\PuTTY\;C:\Program Files\Calibre2\;C:\Program Files\Redis\;C:\Users\huang\IdeaProjects\initializer\apache-maven-3.6.3-bin\apache-maven-3.6.3\bin;C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\bin;C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\lib;C:\Users\huang\AppData\Local\Microsoft\WindowsApps;C:\Users\huang\AppData\Roaming\npm;;C:\Program Files\JetBrains\IntelliJ IDEA Educational Edition 2019.3.1\bin;;C:\Program Files\JetBrains\IntelliJ IDEA 2019.3.4\bin;;C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2020.1\bin;;.]上找不到基于APR的Apache Tomcat本机库,该库允许在生产环境中获得最佳性能
29-May-2020 16:16:09.707 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化协议处理器 ["http-nio-8080"]
29-May-2020 16:16:10.007 信息 [main] org.apache.catalina.startup.Catalina.load 服务器在[1,146]毫秒内初始化
29-May-2020 16:16:10.057 信息 [main] org.apache.catalina.core.StandardService.startInternal 正在启动服务[Catalina]
29-May-2020 16:16:10.058 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 正在启动 Servlet 引擎:[Apache Tomcat/9.0.35]
29-May-2020 16:16:10.123 信息 [main] org.apache.catalina.startup.HostConfig.deployWAR 正在部署web应用程序存档文件[C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps\ROOT.war]
29-May-2020 16:16:20.276 信息 [main] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
29-May-2020 16:16:32.545 严重 [main] org.apache.catalina.core.StandardContext.startInternal 一个或多个筛选器启动失败。完整的详细信息将在相应的容器日志文件中找到
29-May-2020 16:16:32.554 严重 [main] org.apache.catalina.core.StandardContext.startInternal 由于之前的错误,Context[]启动失败
29-May-2020 16:16:36.776 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesJdbc Web应用程序 [ROOT] 注册了JDBC驱动程序 [com.mysql.cj.jdbc.Driver],但在Web应用程序停止时无法注销它。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。
29-May-2020 16:16:36.779 警告 [main] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads Web应用程序[ROOT]似乎启动了一个名为[mysql-cj-abandoned-connection-cleanup]的线程,但未能停止它。这很可能会造成内存泄漏。线程的堆栈跟踪:[
 java.lang.Object.wait(Native Method)
 java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:144)
 com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:85)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 java.lang.Thread.run(Thread.java:748)]
29-May-2020 16:16:36.805 严重 [main] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks web应用程序[ROOT]创建了一个ThreadLocal,其键类型为[java.lang.ThreadLocal](值为[java.lang.ThreadLocal@1d38fd4a]),值类型为[io.netty.util.internal.InternalThreadLocalMap](值为[io.netty.util.internal.InternalThreadLocalMap@51c26394),但在停止web应用程序时未能将其删除。线程将随着时间的推移而更新,以尝试避免可能的内存泄漏
29-May-2020 16:16:36.831 信息 [main] org.apache.catalina.startup.HostConfig.deployWAR web应用程序存档文件[C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps\ROOT.war]的部署已在[26,708]ms内完成
29-May-2020 16:16:36.845 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps\docs]
29-May-2020 16:16:36.910 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps\docs]的部署已在[64]毫秒内完成
29-May-2020 16:16:36.911 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps\examples]
29-May-2020 16:16:37.230 信息 [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
	java.lang.IllegalStateException: 非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
		at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1385)
		at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:1038)
		at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:117)
		at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:84)
		at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
		at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
		at java.lang.Thread.run(Thread.java:748)
29-May-2020 16:16:37.833 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps\examples]的部署已在[922]毫秒内完成
29-May-2020 16:16:37.852 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps\host-manager]
29-May-2020 16:16:37.957 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps\host-manager]的部署已在[105]毫秒内完成
29-May-2020 16:16:37.977 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps\manager]
29-May-2020 16:16:38.072 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps\manager]的部署已在[95]毫秒内完成
29-May-2020 16:16:38.088 信息 [main] org.apache.coyote.AbstractProtocol.start 开始协议处理句柄["http-nio-8080"]
29-May-2020 16:16:38.135 信息 [main] org.apache.catalina.startup.Catalina.start [28,127]毫秒后服务器启动

你这样几句话,没人猜得到问题是啥,把关键的异常日志信息复制出来看看。

我把感觉有用的信息贴出来了

你这是用了JSP啥的吗?

没有呀

尝试在这个文件 conf/logging.properties 后添加一个配置试试看

org.apache.jasper.level = FINEST

还是之前的报错,不过后面多了好些个别的,在“一个或多个筛选器启动失败”后面:

29-May-2020 17:20:27.896 详细 [main] org.apache.jasper.servlet.JspServlet.init JSP引擎的Scratch目录是:[C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\work\Catalina\localhost\docs]
29-May-2020 17:20:27.901 详细 [main] org.apache.jasper.servlet.JspServlet.init 重要提示:不要修改生成的servlet
29-May-2020 17:20:27.919 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory Web应用程序目录[C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps\docs]的部署已在[152]毫秒内完成
29-May-2020 17:20:27.921 信息 [main] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用程序部署到目录 [C:\Users\huang\Desktop\apache-tomcat-9.0.35\apache-tomcat-9.0.35\webapps\examples]
29-May-2020 17:20:28.116 信息 [mysql-cj-abandoned-connection-cleanup] org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading 非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
        java.lang.IllegalStateException: 非法访问:此Web应用程序实例已停止。无法加载[]。为了调试以及终止导致非法访问的线程,将抛出以下堆栈跟踪。
                at org.apache.catalina.loader.WebappClassLoaderBase.checkStateForResourceLoading(WebappClassLoaderBase.java:1385)
                at org.apache.catalina.loader.WebappClassLoaderBase.getResource(WebappClassLoaderBase.java:1038)
                at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.checkThreadContextClassLoader(AbandonedConnectionCleanupThread.java:117)
                at com.mysql.cj.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:84)
                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
                at java.lang.Thread.run(Thread.java:748)

刚刚那些时cmd里后面的信息,刚开始运行开头的部分也多了很多:

29-May-2020 17:20:10.758 详细 [main] org.apache.jasper.servlet.TldScanner$TldScannerCallback.scan 在file:/C:/Users/huang/Desktop/apache-tomcat-9.0.35/apache-tomcat-9.0.35/webapps/ROOT/WEB-INF/lib/spring-oxm-5.2.6.RELEASE.jar中找不到TLD文件。考虑将JAR添 加到CATALINA_BASE/conf/CATALINA.properties文件中的tomcat.util.scan.StandardJarScanFilter.jarsToSkip属性。
29-May-2020 17:20:10.760 详细 [main] org.apache.jasper.servlet.TldScanner$TldScannerCallback.scan 在file:/C:/Users/huang/Desktop/apache-tomcat-9.0.35/apache-tomcat-9.0.35/webapps/ROOT/WEB-INF/lib/jackson-datatype-jdk8-2.10.4.jar中找不到TLD文件。考虑将JAR添加到CATALINA_BASE/conf/CATALINA.properties文件中的tomcat.util.scan.StandardJarScanFilter.jarsToSkip属性。
29-May-2020 17:20:10.762 详细 [main] org.apache.jasper.servlet.TldScanner$TldScannerCallback.scan 在file:/C:/Users/huang/Desktop/apache-tomcat-9.0.35/apache-tomcat-9.0.35/webapps/ROOT/WEB-INF/lib/spring-security-web-5.2.4.RELEASE.jar中找不到TLD文件。考 虑将JAR添加到CATALINA_BASE/conf/CATALINA.properties文件中的tomcat.util.scan.StandardJarScanFilter.jarsToSkip属性。

基本都是这样的信息

没遇到过这些问题,感觉跟JSP有关系啊?

我印象里我们好像没有用过JSP :sob:
这个项目是前后端分离的

你的war包有问题,要么是缺少依赖

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=springboot%20war包部署&fenlei=256&rsv_pq=a9f708b70003f887&rsv_t=d62411puQIWMuJoqvQCXGLwEnunaSqXciUZlcZbl2K2Mxt9POJjQEqqhMow&rqlang=cn&rsv_enter=1&rsv_dl=ib&rsv_sug3=28&rsv_sug1=15&rsv_sug7=100&sug=springboot%2520war%25E5%258C%2585%25E9%2583%25A8%25E7%25BD%25B2&rsv_n=1

1 个赞

我看了你给的连接里的第一个查询结果,按照教程打包部署还是有问题。。。
我这个项目里面没有前端的东西,因为我们项目是前后端分离的,所以前端是另外的前端小组做的,我做的这个部分只有后端的代码,我看博客里说前端的东西也会被打包到web-inf里,是不是因为我没有前端的代码,所以tomcat解压war的时候没找到web-inf里的前端文件,所以报错呀?
主要是不知道TLD到底干啥的,每次报错都有说 至少有一个JAR被扫描用于TLD但尚未包含TLD

这个信息有帮助嘛?
30-May-2020 09:22:57.956 信息 [main] org.apache.catalina.core.ApplicationContext.log 2 Spring WebApplicationInitializers detected on classpath
30-May-2020 09:23:04.180 信息 [main] org.apache.catalina.core.ApplicationContext.log Initializing Spring embedded WebApplicationContext
30-May-2020 09:23:10.122 严重 [main] org.apache.catalina.core.StandardContext.filterStart 启动过滤器异常
javax.naming.NameNotFoundException: 名称[com.example.powercharge.service.impl.MySecurityInterceptor/mySecurityMetadataSource]未在此上下文中绑定。找不到[com.example.powercharge.service.impl.MySecurityInterceptor]。

问题解决了,解题方向搞错了。。。。
不是tomcat,jar包,netty的问题,是securityinterceptor里一个注解的问题:http://www.mamicode.com/info-detail-3004679.html
之后再研究Autowire和Resource吧

2 个赞