记录一下学习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/>