Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property

来来来,记录一下阿里云Maven中央仓库的坑,当然最主要还是自身pom.xml设置问题。

昨天项目启动还好好的,为什么今天项目一启动就报错了呢?(线上项目服务器没重启的话也是正常可以访问的,只要一重启线上服务器就会发现线上服务器Maven在编译的时候下载了很多新的jar包,当然,线上服务器maven的settings.xml配置文件和本地机子配置的同样使用的是阿里云的maven仓库)

项目是使用的是springboot框架

本地开发环境Maven远程仓库的settings.xml配置文件使用了国内的阿里云中央仓库地址(为了提高下载引入的Jar包速度,懂的都懂)

	
		
		
		
			alimaven
			central
			aliyun maven
			http://maven.aliyun.com/nexus/content/repositories/central/
		

		
			alimaven
			aliyun maven
			http://maven.aliyun.com/nexus/content/groups/public/
			central
		
	

刚好今天人家阿里云Maven中央仓库更新了Mybatis最新的jar包,自己项目中的mybatis包也没有写指定版本,所以就导致阿里云Maven远程仓库更新了Mybatis的引入包,而自己项目的pom也导入了阿里云远程仓库的最新Mybatis包导致项目不兼容而导致启动报错

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2022-11-27 17:03:19,287:ERROR main (SpringApplication.java:771) - Application startup failed
 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'activitiesExhibitionController': Unsatisfied dependency expressed through field 'servletUtil'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'servletUtil': Unsatisfied dependency expressed through field 'userActiveMapper'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userActiveMapper' defined in file [/Users/mac/IdeaProjects/yiwei/shinemi-realiart/target/classes/com/shinemi/realiart/mapper/UserActiveMapper.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:588) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:366) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1264) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) ~[spring-beans-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543) ~[spring-context-4.3.13.RELEASE.jar:4.3.13.RELEASE]
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1118) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1107) [spring-boot-1.5.9.RELEASE.jar:1.5.9.RELEASE]
	at com.shinemi.realiart.Application.main(Application.java:20) [classes/:?]

一步步排查原因:本地连接服务器mysql数据库   正常、springboot扫描Mapper.xml映射文件  正常、但是报错就是提示我需要sql工厂session属性,我就纳闷了,昨天啥都没动,项目启动还好好的,今天怎么就见鬼了呢

解决方法:

去找到项目中pom.xml的mybatis引入jar

        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            RELEASE
        

看到项目中的mybatis的版本号设置了吗?  RELEASE

mybatis引入的jar包没有设置指定版本号,而是使用RELEASE最新发布的版本,所以当阿里云远程中央仓库发布了RELEASE的mybatis Jar包后,本地启动项目经过Maven编译启动后,自动下载阿里云远程的最新Mybatis的发布版本Jar引入导致项目不兼容

所以我这里要修改Mybatis使用指定版本号的jar包

使用了2.1.1版本的试试

        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.1.1
        

设置好指定版本号后,Maven重新导入Jar包,启动项目成功!!!

以后还是尽量设置指定的版本号吧,别用RELEASE最新发布版本的Jar了。

我真的哭死,搞了一天排查原因.....

你可能感兴趣的:(java,java,mybatis,maven)