跑aicai-datachange-example工程踩得坑

首先将datachange工程check out下来,然后open到idea中(我是将aicai-datachange整个都open进来了)

接下来jdk,maven什么的都要配置好(基本),配置完之后maven导入一下;

接着打开example下的Producer.java,执行main方法。

问题一,错误如下:

如上图:报了一个 NoClassDefFoundError 和 ClassNotFoundException 的错误,但是根据路径查找会发现GenericXmlApplicationContext这个类是存在的(NoClassDefFoundError错误:表示在编译期间通过,但运行期找不到);

最终解决的办法是:

根据报错信息看是在springframework/context下找不到,于是打开example工程下的pom.xml文件,找到spring-context的依赖,

将<scope>provided</scope>注释掉即不报错了,scope表示限制一个范围,provided表明该包只在编译和测试的时候用,

注释掉之后记得一定要重新import一下maven

注:再运行的时候发现还报错,但报错的是找不到spring-beans下的类了,因此同样将spring-beans下的scope也注释掉

再运行,问题二,报错信息如下:

Offending resource: class path resource [spring-context-producer.xml]; 
nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: 
Failed to read candidate component class: file [D:\z_other\aicai-datachange\aicai-datachange-client\target\classes\com\aicai\datachange\client\manager\DataChangeDOConverter.class]; 
nested exception is org.springframework.core.NestedIOException: ASM ClassReader failed to parse class file - probably due to a new Java class file version that isn't supported yet: file [D:\z_other\aicai-datachange\aicai-datachange-client\target\classes\com\aicai\datachange\client\manager\DataChangeDOConverter.class];
nested exception is java.lang.IllegalArgumentException

加载资源 spring-context-producer.xml 时报错,错误可以看到第三行说"无法读取组件类DataChangeDOConverter.class",但是往路径下一找,又有!懵逼,百度一下"Failed to read candidate component class:"发现问题:

要使用java8,只支持spring 4.X以上版本,而spring的使用最低java要求java5及以上

我往工程里一看,发现maven导入的spring确实都是3.x版本的,因此这里解决办法有2个:

1 修改jdk为jdk1.7(我使用的1.8)--不仅要修改idea中的jdk版本,还要记得修改所有pom文件中配置的java-version版本,若jdk修改你的不彻底则会报错:无效的源发行版:1.8

2 将pom.xml文件中配置的spring的依赖版本都改为4.X以上同一个版本即可(我本次采用的方法)重新import maven,再运行

最终,终于不报错了,成功跑起来了。。。

发布了98 篇原创文章 · 获赞 9 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/liucai1018/article/details/103610066