IDEA 單元測試報錯:Class not found:xxxx springboot的解決
IDEA單元測試報錯:Class not found:xxxx springboot
報錯
引入了新依賴,想著在測試模塊進行測試。
結果報錯說
Class not found:xxxx
說找不到這個類。
解決
把安裝了新依賴的父工程 重新 install一下 再進行測試。
測試通過

讓人抓狂的ClassNotFoundException
我們的項目基于Spring Boot + Maven,采用Intelli IDEA工具進行開發(fā)。代碼在另一名同事的機器上檢出之后,
啟動項目時,始終出現(xiàn)如下錯誤提示
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設置的問題,但項目完全可以編譯成功,所以此點可以排除。從錯誤信息:<code> javax/servlet/http/HttpServletResponse</code>可以看是Servlet的問題,Sevlet是java的web server一個容器,那么是不是表示這個容器類無法加載進行初始化?利用bing及百度做了一些查找(不要問為什么不用google),并未找到解決方案。
折騰了三個小時之后,最終放棄了直接解決這個問題。讓同事重新安裝了Intell IDEA,并重新下載代碼進行編譯運行,居然一切正常,真讓人想哭又想笑!自己內心松了一口氣,雖然并未找到真正的原因,但終究這個問題消失了。
“欠下的債,終究要還的!”在沒過兩日的今天,在自己的機器居然也出現(xiàn)了這種問題,折騰近一個小時仍舊沒有找到原因與解決辦法,真是有點讓人奔潰,有點想放棄了。
但轉念一想,如果今日放棄,想必日后肯定還會再次遇到,何不今日多花點時間,徹底弄清這個問題,找出原因與解決方案。
沒有了內心的煩躁與焦慮,自己反而能夠靜心地把錯誤的信息想了又想,推測各種可能的原因。加上之前的種種嘗試的失敗,基本斷定是web server容器的問題。
上網(wǎng)查了一些資料,發(fā)現(xiàn)如果容器出現(xiàn)問題,確實會報此種錯誤。項目使用了spring boot的內嵌tomcat作為web server,那么很有可能是這個容器出現(xiàn)了問題。
雖然Maven也加載了spring boot的tomcat包,但是不是這個包損壞或存在問題。
在項目的pom文件,添加了以下代碼
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <version>1.5.2.RELEASE</version> </dependency>
更新了Maven的依賴包,重新編譯運行,奇跡發(fā)生了,一切OK,內心真是有點小激動!
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
springMVC使用ajaxFailUpload上傳圖片的方法
這篇文章主要介紹了springMVC使用ajaxFailUpload上傳圖片的相關知識,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-06-06
grade構建閱讀spring源碼環(huán)境 Idea2020.3的過程
這篇文章主要介紹了grade構建閱讀spring源碼環(huán)境 Idea2020.3,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10

