IDEA 單元測(cè)試報(bào)錯(cuò):Class not found:xxxx springboot的解決
IDEA單元測(cè)試報(bào)錯(cuò):Class not found:xxxx springboot
報(bào)錯(cuò)
引入了新依賴,想著在測(cè)試模塊進(jìn)行測(cè)試。
結(jié)果報(bào)錯(cuò)說
Class not found:xxxx
說找不到這個(gè)類。
解決
把安裝了新依賴的父工程 重新 install一下 再進(jìn)行測(cè)試。
測(cè)試通過

讓人抓狂的ClassNotFoundException
我們的項(xiàng)目基于Spring Boot + Maven,采用Intelli IDEA工具進(jìn)行開發(fā)。代碼在另一名同事的機(jī)器上檢出之后,
啟動(dòng)項(xiàng)目時(shí),始終出現(xiàn)如下錯(cuò)誤提示
03-11 15:41:23[org.springframework.boot.SpringApplication-825][main][13298] - Application startup failed
java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletResponse
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
at java.lang.Class.getDeclaredMethods(Class.java:1975)
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:609)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:521)
at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:507)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.determineCandidateConstructors(AutowiredAnnotationBeanPostProcessor.java:241)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineConstructorsFromBeanPostProcessors(AbstractAutowireCapableBeanFactory.java:1069)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1042)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:764)
at org.springframework.boot.SpringApplication.doRun(SpringApplication.java:357)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:305)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1124)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1113)
at cn.com.icaifeng.Application.main(Application.java:33)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServletResponse
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 29 more
開始懷疑是JDK或JRE設(shè)置的問題,但項(xiàng)目完全可以編譯成功,所以此點(diǎn)可以排除。從錯(cuò)誤信息:<code> javax/servlet/http/HttpServletResponse</code>可以看是Servlet的問題,Sevlet是java的web server一個(gè)容器,那么是不是表示這個(gè)容器類無法加載進(jìn)行初始化?利用bing及百度做了一些查找(不要問為什么不用google),并未找到解決方案。
折騰了三個(gè)小時(shí)之后,最終放棄了直接解決這個(gè)問題。讓同事重新安裝了Intell IDEA,并重新下載代碼進(jìn)行編譯運(yùn)行,居然一切正常,真讓人想哭又想笑!自己內(nèi)心松了一口氣,雖然并未找到真正的原因,但終究這個(gè)問題消失了。
“欠下的債,終究要還的!”在沒過兩日的今天,在自己的機(jī)器居然也出現(xiàn)了這種問題,折騰近一個(gè)小時(shí)仍舊沒有找到原因與解決辦法,真是有點(diǎn)讓人奔潰,有點(diǎn)想放棄了。
但轉(zhuǎn)念一想,如果今日放棄,想必日后肯定還會(huì)再次遇到,何不今日多花點(diǎn)時(shí)間,徹底弄清這個(gè)問題,找出原因與解決方案。
沒有了內(nèi)心的煩躁與焦慮,自己反而能夠靜心地把錯(cuò)誤的信息想了又想,推測(cè)各種可能的原因。加上之前的種種嘗試的失敗,基本斷定是web server容器的問題。
上網(wǎng)查了一些資料,發(fā)現(xiàn)如果容器出現(xiàn)問題,確實(shí)會(huì)報(bào)此種錯(cuò)誤。項(xiàng)目使用了spring boot的內(nèi)嵌tomcat作為web server,那么很有可能是這個(gè)容器出現(xiàn)了問題。
雖然Maven也加載了spring boot的tomcat包,但是不是這個(gè)包損壞或存在問題。
在項(xiàng)目的pom文件,添加了以下代碼
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <version>1.5.2.RELEASE</version> </dependency>
更新了Maven的依賴包,重新編譯運(yùn)行,奇跡發(fā)生了,一切OK,內(nèi)心真是有點(diǎn)小激動(dòng)!
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
springMVC使用ajaxFailUpload上傳圖片的方法
這篇文章主要介紹了springMVC使用ajaxFailUpload上傳圖片的相關(guān)知識(shí),代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06
springboot實(shí)現(xiàn)郵箱驗(yàn)證碼功能
這篇文章主要為大家詳細(xì)介紹了springboot實(shí)現(xiàn)郵箱驗(yàn)證碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02
Springboot中靜態(tài)文件的兩種引入方式總結(jié)
這篇文章主要介紹了Springboot中靜態(tài)文件的兩種引入方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
grade構(gòu)建閱讀spring源碼環(huán)境 Idea2020.3的過程
這篇文章主要介紹了grade構(gòu)建閱讀spring源碼環(huán)境 Idea2020.3,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
Springboot實(shí)現(xiàn)郵箱驗(yàn)證代碼實(shí)例
這篇文章主要介紹了Springboot實(shí)現(xiàn)郵箱驗(yàn)證代碼實(shí)例,在一些業(yè)務(wù)需求中我們經(jīng)常需要使用郵箱進(jìn)行驗(yàn)證碼的收取,本文通過簡(jiǎn)單的代碼實(shí)例來說明,需要的朋友可以參考下2024-01-01
MyBatis-Plus分頁時(shí)排序的實(shí)現(xiàn)方法
這篇文章主要介紹了MyBatis-Plus分頁時(shí)的排序,分頁時(shí)排序的方法,后端OrderItems排序、Wrapper排序前端指定排序,文章結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03

