惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Microsoft Azure Blog
Microsoft Azure Blog
C
Cisco Blogs
WordPress大学
WordPress大学
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The Cloudflare Blog
小众软件
小众软件
Recent Commits to openclaw:main
Recent Commits to openclaw:main
I
Intezer
Cyberwarzone
Cyberwarzone
T
The Blog of Author Tim Ferriss
博客园 - Franky
F
Fortinet All Blogs
C
Cyber Attacks, Cyber Crime and Cyber Security
G
Google Developers Blog
Recent Announcements
Recent Announcements
I
InfoQ
T
Threat Research - Cisco Blogs
V
V2EX
T
Tenable Blog
H
Help Net Security
Cisco Talos Blog
Cisco Talos Blog
T
Tailwind CSS Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
The GitHub Blog
The GitHub Blog
P
Privacy & Cybersecurity Law Blog
A
Arctic Wolf
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
D
DataBreaches.Net
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
D
Docker
T
Tor Project blog
Attack and Defense Labs
Attack and Defense Labs
P
Proofpoint News Feed
H
Heimdal Security Blog
Engineering at Meta
Engineering at Meta
雷峰网
雷峰网
Martin Fowler
Martin Fowler
AWS News Blog
AWS News Blog
IT之家
IT之家
Google DeepMind News
Google DeepMind News
NISL@THU
NISL@THU
Google Online Security Blog
Google Online Security Blog
Vercel News
Vercel News
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
SecWiki News
SecWiki News
GbyAI
GbyAI
P
Proofpoint News Feed
月光博客
月光博客
Schneier on Security
Schneier on Security

技术改变视野

为程序员、设计师打造的摸鱼社区:摸鱼派! - 技术改变视野 大白话 | Java初学指♂男:“说说初学的误区与死结”( 壹 | 反射与Field ) - 技术改变视野 大白话之耦合性:什么是耦合性和内聚性?用编程语言实例讲解! - 技术改变视野 🎨 适用于 Solo / Bolo 的清新高级主题 —— Sakura | 移植自 WordPress 主题 - 技术改变视野 我在 GitHub 上的开源项目 - 技术改变视野 为IDEA/Git配置GPG密钥,点亮GitHub Verified Commit标识 - 技术改变视野 从 SpringMVC 转为使用 SpringBoot —— 手把手带你使用 Intellij IDEA 最快速地搭建 SpringBoot+MyBatis(无 XML)+Thymeleaf - 技术改变视野 无题 - 技术改变视野 年轻人的第一辆京牌电动车 - 技术改变视野 我们忙碌且漫长的一生,有多久是为自己而活? - 技术改变视野 一个最简单的实例理解Semaphore在Java中的作用 - 技术改变视野 说说《后浪》 - 技术改变视野 离线使用 Google Fonts:让你的网站更精致 | goofoffline 神器,一键下载生成离线字体库! - 技术改变视野 实例带你学会简单的Java Thread多线程 - 技术改变视野 一个实例理解Java的接口(interface)用处与用法 - 技术改变视野 一个实例带你理解JavaBean - 技术改变视野 WebFilter-SpringBoot过滤器注解实例讲解 - 技术改变视野 实例带你搞懂Java多线程&&线程池之(壹):线程池与多线程的关系和区别 - 技术改变视野 实例带你搞懂Java多线程&&线程池之(贰):简单的线程池应用 - 技术改变视野 实例带你获取多线程Thread的返回值之 (壹) - Callable的运行 - 技术改变视野 实例带你获取多线程Thread的返回值之 (贰) - Callable配合线程池返回数据 - 技术改变视野 一个实例理解Java Runnable多线程用处与用法 - 技术改变视野 从零开始OpenSSL之 (壹) - 使用genrsa、rsa、rsautl生成公私钥 - 技术改变视野 从零开始 OpenSSL 之 (贰) - 使用 rsautl 解密文件 - 技术改变视野 大白话之Docker(壹):快速入门&&简单官方实例 - 技术改变视野 大白话之Docker(贰):简单部署一个Tomcat服务并发布内容 - 技术改变视野 大白话之从零讲解DVWA(壹)-SQL注入(SQL Injection) Low Level - 技术改变视野 大白话之从零讲解DVWA(贰)-SQL注入(SQL Injection) Medium/High Level - 技术改变视野 Java日志插件-Slog4J下载 - 技术改变视野 大白话之必会Java Atomic | 线程一点也不安全(一):比自增和synchronized更快速、靠谱的原子操作(调用C语言) - 技术改变视野 Log-MySQL root用户登录后无法查看数据库全部表/正常访问数据库 Access denied for user 'root'@'localhost' to database - 技术改变视野 大白话之Docker(叁):制作一个运行Tomcat服务端的Docker镜像 - 技术改变视野 Github仅保留指定文件/文件夹当前Commit,删除所有历史记录,清除「敏感信息」 - 技术改变视野 将Tomcat、MySQL从Linux迁移到Windows的心路历程(干货):令人恐惧的字符编码 - 技术改变视野 大白话之Java反射-初学最迷的概念:能干啥?咋用? - 技术改变视野 大白话之Java面向接口编程:最“正经”的中文实例讲解,看不懂来打我! - 技术改变视野 大白话 | 课堂实践:使用Iterator对数组进行遍历 - 技术改变视野 大白话之fail-fast | fail-safe:为什么会有这个机制?它有什么作用? - 技术改变视野 刨根问底 | 大白话:在使用注解后,框架是怎么知道你哪个方法使用了注解的?用@RequestMapping注解举例详解! - 技术改变视野 大白话之必会Java Atomic | 线程一点也不安全(二):Atomic的ABA问题会导致什么情况?如何解决? - 技术改变视野 随笔 | 奇淫技巧 | Java:记return和短路运算符的妙用 - 技术改变视野 随笔 | Tomcat:续-从Linux迁移到Windows编码问题彻底解决 - 技术改变视野 大白话之AutoClosable接口 | try-with-resources:JDK1.7的新特性,提高重复回收效率 - 技术改变视野 大白话之Java多线程join方法:开局一张图,试学一分钟,你就费和我一样,理解介个方法 - 技术改变视野 大白话之Java Stream流:将类数组流化,便捷批量修改,通俗讲解! - 技术改变视野 Java 困扰三周の问题:使用byte[]或skip()方法读取字节流Stream文件尾部多/少/缺字节解决方法 - 技术改变视野 大白话之Java级联调用:一个类,一条语句,同时调用好几个方法,串成一串 - 技术改变视野
Spring: java.lang.NoSuchMethodError: clearCache | ClassNotFoundException | Error during artifact deployment 思路及解决办法 - 技术改变视野
adlered · 2019-12-09 · via 技术改变视野

前言

一如既往的今天,打算打开WEB项目一如既往地修(写)BUG。就在我运行的时候,弹出了错误:

 1java.lang.NoSuchMethodError: org.springframework.core.ResolvableType.clearCache()
 2	at org.springframework.context.support.AbstractApplicationContext.resetCommonCaches(AbstractApplicationContext.java:873)
 3	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:559)
 4	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
 5	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
 6	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
 7	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4853)
 8	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5314)
 9	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
10	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753)
11	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:729)
12	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
13	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1092)
14	at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1834)
15	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
16	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
17	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
18	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
19	at java.lang.Thread.run(Thread.java:745)
 1严重: Error configuring application listener of class org.springframework.web.util.Log4jConfigListener
 2java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener
 3	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
 4	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
 5	at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
 6	at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
 7	at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:142)
 8	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4854)
 9	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
10	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
11	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
12	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
13	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
14	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
15	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
16	at java.lang.Thread.run(Thread.java:745)

马鸭,昨天还能完完整整的运行,今天咋就废了?

解决思路

小提示:如果你使用IDEA,Tomcat提示Error during artifact deployment,你可以在Tomcat Localhost Log查看错误日志:

8.png

在各种翻找和思考后,我尝试了以下几种办法:

下方都有可能是导致出现该问题的解决方案,每个解决方案不能保证解决问题,但我建议在备份后多做尝试。

1)代码出错

出现问题可能是由于你的注解使用不遵循语法导致的,而IDE无法检测部分注解的正确性。

引用自https://blog.csdn.net/x_iya/article/details/54234665

1@WebServlet(name = "testServlet", urlPatterns = {"test.do"})

上面这段代码的urlPatterns赋值不符合要求,应修改为:

1@WebServlet(name = "testServlet", urlPatterns = "test.do")

不过在我与上一正常比对后确认,我的语法符合要求。

2)Rebuild

在IDEA中,默认不会将所有文件重新编译一次,而是只编译检测到修改的文件。但有时也会出现BUG,尝试Build - Rebuild Project来解决。

在尝试后,也没有解决我的问题。

3)web.xml

检查WEB-INF - web.xml文件的contextConfigLocation设置,它用于在拦截器中定义配置文件的位置。

  1. 检查param-value指向的Spring配置文件是否正确
  2. 如果没有此配置项,添加一个

如果你不知道应该指向哪个文件,查找你的项目中是否有contextConfig.xml,或内容类似下图中的文件:

经检查,我的配置没有问题。

4)配置Artifacts

如果你使用的IDE是IDEA,按CTRL+ALT+SHIFT+S进入Project Structure设置,选择左侧Artifacts,在右侧选择你Tomcat部署的项目:

Available Elements下方,右键你的项目并选择Put into Output Root

(绝望)还是无法正常启动。

5)Spring版本

由于提示了NoSuchMethodError: clearCache,在经过查阅后得知clearCache()Spring 4.2+版本才有的方法。如果你使用了Maven,可以通过修改pom.xml来修改Spring的版本:

修改(如果不存在则添加)配置:

1<spring.version>4.2.3.RELEASE</spring.version>

重新Build项目。

在修改版本后,我的Spring便换了一个报错:

1Error during artifact deployment. See server log for details.

于是查看日志(IDEA中选择Tomcat Localhost Log选项卡),发现错误原因是:

1java.lang.ClassNotFoundException

很明显,有Jar包并没有被Tomcat所识别,也就是说,Maven在将所有Jar包复制到Tomcat的Lib中时,出现了漏网之鱼

6)Maven:重新导入

既然出现了漏网之鱼,就把Maven中的所有依赖重新导入试试。
在IDEA中,右键pom.xml文件,选择Maven -> Reimport即可。

7)配置Tomcat

由于刚刚我们修改了Artifact,我们就需要将Artiface的项目部署重新绑定到Tomcat中。
在IDEA中,点击右上角的Tomcat项目,选择Edit Configuration

Deployment中,选中第一个窗口中的内容,并点击下方减号,然后再点击加号,重新添加你刚刚修改的Artifact项目部署。

请注意:Application context选项,会在你修改部署文件后自动变更为项目名为目录,我建议将其修改为/,以根目录来访问网站目录。

后语

通过各种尝试,我发现在使用4、6、7三种方法后,我的问题终于得到了解决。在此建议,在备份项目后,尝试每一种方法。祝你修复成功!(我先去自闭了,我相信你会来一起自闭的......)

牢骚:啥也没动就这样了,折腾了一天...... 心累。
把所有的解决方案都尝试复现并记录下来了,希望能帮到现在满头大汉(误)的你。
由于是问题复现,所以记录可能不完整,如有问题可以在评论区交流~