Spring入門踩坑記錄
阿新 • • 發佈:2020-08-28
記錄一下學習Spring時的踩坑經驗。
Jdk8不相容Spring4.x以下版本
入門三天,我一直被這控制檯一片紅苦惱著。
在視訊的評論區中沒有解決,上論壇上也沒有解決。
詳細報錯:
org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions 資訊: Loading XML bean definitions from class path resource [beans.xml] Exception in thread "main" java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.clearCache()V at org.springframework.context.support.AbstractApplicationContext.resetCommonCaches(AbstractApplicationContext.java:924) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:575) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:144) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:85) at MyTest.main(MyTest.java:13)
解決
知道我無意間看到這個!!!
Ctrl+Shift+Alt+S,進入專案設定,更換專案的Jdk版本為8以上,我選擇的是Jdk12:
如果以上設定還法子解決,那可能還需要再多一步:
不支援發行版本5 或 Compilation failed: internal java compiler error
提示
Error: java: 錯誤: 不支援發行版本 5
或
``Error: java: 錯誤: Compilation failed: internal java compiler error`
分析:
導致這個錯誤的原因主要是因為jdk版本問題,此處有兩個原因,一個是編譯版本不匹配,一個是當前專案jdk版本不支援。我的是編譯器版本的問題。
解決:
Ctrl+Alt+S,進入IDEA設定,Compiler中設定Java編譯器的版本。
解決來源:https://blog.csdn.net/wo541075754/article/details/82119860
NoSuchBeanDefinitionException: No bean named 'user' available
控制檯提示以下錯誤:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'user' available
解決:
檢查XML檔案中Bean物件的id是否有問題?檢查繫結的class是否有問題?等等……
結果,我發現是繫結的XML檔案,userbeans.xml繫結成了beans.xml。。。
ApplicationContext context = new ClassPathXmlApplicationContext("userbeans.xml");
同時使用p名稱空間、c名稱空間
同時使用p名稱空間、c名稱空間,因為類中缺少無參構造器,控制檯會報錯:
org.springframework.context.support.AbstractApplicationContext refresh
警告: Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'user' defined in class path resource [userbeans.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.melodyhub.pojo.User]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.melodyhub.pojo.User.<init>()
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'user' defined in class path resource [userbeans.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.melodyhub.pojo.User]: No default constructor found; nested exception is java.lang.NoSuchMethodException: com.melodyhub.pojo.User.<init>()
解決:
類中加上無參構造器,即可。
NullPointerException
控制檯報錯:出現空指標
java.lang.NullPointerException
解決
上述問題存在多種情況。
- 可能是使用了註解,但是
applicationContext.xml
中沒有該語句
<!--開啟對註解的支援-->
<context:annotation-config/>