记一次JDK版本错误导致项目运行不了的BUG,--Dubbo Error creating bean with name 'XXXXX':

笔者今日遇到了一次很让人头疼的BUG,以前也遇到过一次。

根本原因是JDK版本太低。

问题描述:

部署服务的时候,启动服务相关报错如下:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'XXXXX': FactoryBean threw exception on object creation; nested exception is java.lang.UnsupportedOperationException
	at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:178)
	at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:101)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1674)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getObjectForBeanInstance(AbstractAutowireCapableBeanFactory.java:1249)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:257)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.addCandidateEntry(DefaultListableBeanFactory.java:1474)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1431)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1214)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1171)
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:668)

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'XXXXX': FactoryBean threw exception on object creation; nested exception is java.lang.UnsupportedOperationException

解决过程:

笔者整合的是Apache的Dubbo2.7.0和Springboot,这个报错是消费端无法创建调用的服务代理对象。

在网上查询资料很少,有的说是Dubbo的版本的bug,有的说是依赖冲突。

但是笔者的情况如下:

1. 笔者在本地开发环境下,这个完全可以正常的运行。但是服务器运行不了。

2. 服务器的JDK版本是1.8_11,笔者本地的JDK是1.8_191.

3. 笔者重新开了一个虚拟机,然后安装新的JDK环境,版本为1.8_172,然后重新以jar包运行,也能成功。

在这样的情况下,笔者确定了是JDK版本过低的问题导致创建接口的代理对象不成功。

因此解决方式就是,卸载低版本的JDK,重新安装高版本的JDK,更改环境变量。

 

偶然性意外:

其实笔者很久以前是菜鸡的时候也遇到过一次,当时是笔者在玩Java的反射。开始使用的是jdk1.8_51,然后很无赖的,反射创建对象并不成功,然后当时笔者秉着菜鸡的思维(遇到解决不了的问题都喜欢怀疑系统有问题或者环境有问题),然后笔者重新安装了新的版本的jdk,安装后的版本是jdk1.8_151。然后就很幸运的创建对象成功了。

 

总结:

1. 分析启动问题,一定要考虑版本兼容性的问题,比如Tomcat的版本,JDK版本。

2. 利用不同环境进行测试,控制变量,对照,然后分析。

3. 敢于质疑,敢于尝试,多利用工具。在保证安全性的情况下,勇于尝试。

4. 本地,虚拟机,是很好的勇于测试的工具,不要懒于替换环境,和安装环境。勤于折腾。

5. 错误是成长很好的方式,善于总结经验,做好笔记。探究精神,不怕失败是经验积累的最好途径。

你可能感兴趣的:(项目工程报错解决)