首页 文章

mybatis-spring-boot-starter在maven包时给出错误

提问于
浏览
0

我是新手 . 我按照第http://sivalabs.in/2016/03/springboot-working-with-mybatis/页的说明配置mybatis-spring-boot-starter . 我使用Mapper XML文件来定义查询 .

我通过spring boot app运行它没问题 . 但是当我用cmd打包war文件时: mvn clean package . 我通过cmd运行web应用程序: java -jar [fileWarName].war 我给出了如下错误:

启动ApplicationContext时出错 . 要显示自动配置报告,请在启用“debug”的情况下重新运行应用程序 . 2017-08-20 12:26:48.690 ERROR 3404 --- [main] osboot.SpringApplication:应用程序启动失败org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为'usersResource'的bean在URL [jar:中定义]时出错文件:/ C:/Users/KhoaNA/Desktop/test/spring-boot-mybatis-0.0.1-SNAPSHOT.war / WEB-INF / classes中/com/techprimers/mybatis/springbootmybatis/resource/UsersResource.class]! :通过构造函数参数0表示的不满意的依赖;嵌套异常是org.springframework.beans.factory.UnsatisfiedDependencyException:在URL中定义名称为'usersMapper'的bean时出错[jar:file:/ C:/Users/KhoaNA/Desktop/test/spring-boot-mybatis-0.0.1 -SNAPSHOT.war!/ WEB-INF / classes!/com/techprimers/mybatis/springbootmybatis/mapper/UsersMapper.class]:通过bean属性'sqlSessionFactory'表示的不满意的依赖关系;嵌套异常是org.springframework.beans.factory.BeanCreationException:在类路径资源[org / mybatis / spring / boot / autoconfigure / MybatisAutoConfiguration.class]中定义名称为'sqlSessionFactory'的bean创建错误:通过工厂方法进行Bean实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化[org.apache.ibatis.session.SqlSessionFactory]:工厂方法'sqlSessionFactory'抛出异常;嵌套异常是org.springframework.core.NestedIOException:无法解析映射资源:'URL [jar:file:C:\ Users \ KhoaNA \ Desktop \ test \ spring-boot-mybatis-0.0.1-SNAPSHOT.war!/ WEB-INF /类/ VN / HIPT / FAS / SQL / MenuMapper.xml]';嵌套异常是org.apache.ibatis.builder.BuilderException:解析Mapper XML时出错 . 原因:java.lang.IllegalArgumentException:Mapped Statements集合已包含org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749)中com.techprimers.mybatis.springbootmybatis.mapper.UsersMapper.findUserById的值 . [spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]在org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:189)〜[spring-beans-4.3 . 9.RELEASE.jar!/:4.3.9.RELEASE]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1193)〜[spring-beans-4.3.9.RELEASE.jar!/ :4.3.9.RELEASE]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1095)〜[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutow)在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)的ireCapableBeanFactory.java:513)〜[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]〜 [spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:306)〜[spring-beans-4.3 .9.RELEASE.jar!/:4.3.9.RELEASE]在org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)〜[spring-beans-4.3.9.RELEASE.jar! /:4.3.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)〜[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE在org.springframework.beans的org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)〜[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] .factory.support.DefaultListableBeanFactory.preInstantiateSingl org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)中的etons(DefaultListableBeanFactory.java:761)〜[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]〜 [spring-context-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] atorg.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)〜[spring-context-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] org.springframework.boot.context.embedded .EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)〜[spring-boot-1.5.4.RELEASE.jar!/:1.5.4.RELEASE] org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)[spring-boot-1.5.4.RELEASE.jar !/:1.5.4.RELEASE]在组织的org.springframework.boot.SpringApplication.run(SpringApplication.java:303)[spring-boot-1.5.4.RELEASE.jar!/:1.5.4.RELEASE] . springframework.boot.SpringApplication.run(SpringApplication.java:1118)[spring-boot-1.5.4.RELEASE.jar!/:1.5.4.RELEASE] org.springframework.boot.SpringApplication.run(SpringApplication.java: 1107)[spring-boot-1.5.4.RELEASE.jar!/:1.5.4.RELEASE] at com.techprimers.my bat.springbootmybatis.SpringBootMybatisApplication.main(SpringBootMybatisApplication.java:12)[classes!/:0.0.1-SNAPSHOT] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)〜[na:1.8.0_144] at sun.reflect . NativeMethodAccessorImpl.invoke(Unknown Source)〜[na:1.8.0_144] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)〜[na:1.8.0_144] at java.lang.reflect.Method.invoke(Unknown Source)〜 [na:1.8.0_144] org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)[spring-boot-mybatis-0.0.1-SNAPSHOT.war:0.0.1-SNAPSHOT] at org . springframework.boot.loader.Launcher.launch(Launcher.java:87)[spring-boot-mybatis-0.0.1-SNAPSHOT.war:0.0.1-SNAPSHOT] org.springframework.boot.loader.Launcher.launch( Launcher.java:50)[spring-boot-mybatis-0.0.1-SNAPSHOT.war:0.0.1-SNAPSHOT] org.springframework.boot.loader.WarLauncher.main(WarLauncher.java:59)[spring-boot -mybatis-0.0.1-SNAPSHOT.war:0.0.1-SNAPSHOT]引起:org.springframework.beans.factory.Unsatis fiedDependencyException:创建在URL [jar:file:/ C:/Users/KhoaNA/Desktop/test/spring-boot-mybatis-0.0.1-SNAPSHOT.war!/ WEB-INF / classes中定义的名称为'usersMapper'的bean时出错!/com/techprimers/mybatis/springbootmybatis/mapper/UsersMapper.class]:通过bean属性'sqlSessionFactory'表示的不满意的依赖关系;嵌套异常是org.springframework.beans.factory.BeanCreationException:在类路径资源[org / mybatis / spring / boot / autoconfigure / MybatisAutoConfiguration.class]中定义名称为'sqlSessionFactory'的bean创建错误:通过工厂方法进行Bean实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化[org.apache.ibatis.session.SqlSessionFactory]:工厂方法'sqlSessionFactory'抛出异常;嵌套异常是org.springframework.core.NestedIOException:无法解析映射资源:'URL [jar:file:C:\ Users \ KhoaNA \ Desktop \ test \ spring-boot-mybatis-0.0.1-SNAPSHOT.war!/ WEB-INF /类/ VN / HIPT / FAS / SQL / MenuMapper.xml]';嵌套异常是org.apache.ibatis.builder.BuilderException:解析Mapper XML时出错 . 原因:java.lang.IllegalArgumentException:Mapped Statements集合已包含org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1357)中com.techprimers.mybatis.springbootmybatis.mapper.UsersMapper.findUserById的值〜 [spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1249)〜[spring-beans-4.3 . 9.RELEASE.jar!/:4.3.9.RELEASE]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553)〜[spring-beans-4.3.9.RELEASE.jar!/ :4.3.9.RELEASE]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)〜[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]在org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObj ect(AbstractBeanFactory.java:306)〜[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230 )〜[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)〜[spring-beans-4.3]中的〜[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] .9.RELEASE.jar!/:4.3.9.RELEASE]在org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)〜[spring-beans-4.3.9.RELEASE.jar! /:4.3.9.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)~ [spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE在org.springframework.beans的org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)〜[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] .factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)〜[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]在org.springframework.beans.factory.support.ConstructorResolver . createArgumentArray(ConstructorResolver.j ava:741)〜[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] ... 27个常见框架省略引起:org.springframework.beans.factory.BeanCreationException:创建bean时出错在类路径资源[org / mybatis / spring / boot / autoconfigure / MybatisAutoConfiguration.class]中定义的名称'sqlSessionFactory':通过工厂方法的Bean实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化[org.apache.ibatis.session.SqlSessionFactory]:工厂方法'sqlSessionFactory'抛出异常;嵌套异常是org.springframework.core.NestedIOException:无法解析映射资源:'URL [jar:file:C:\ Users \ KhoaNA \ Desktop \ test \ spring-boot-mybatis-0.0.1-SNAPSHOT.war!/ WEB-INF /类/ VN / HIPT / FAS / SQL / MenuMapper.xml]';嵌套异常是org.apache.ibatis.builder.BuilderException:解析Mapper XML时出错 . 原因:java.lang.IllegalArgumentException:Mapped Statements集合已经包含org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599)中com.techprimers.mybatis.springbootmybatis.mapper.UsersMapper.findUserById的值 . [spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1173)〜[spring-beans-4.3 . 9.RELEASE.jar!/:4.3.9.RELEASE]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1067)〜[spring-beans-4.3.9.RELEASE.jar!/ :4.3.9.RELEASE]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)〜[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]在org.springframework.beans.factory.support.AbstractAutowireCa org.springframework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory . )中的pableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)〜[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] . java:306)〜[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)~ [spring -beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)〜[spring-beans-4.3.9 . RELEASE.jar!/:4.3.9.RELEASE]在org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)〜[spring-beans-4.3.9.RELEASE.jar!/:4.3 .9.RELEASE] org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)~ [spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] at org .springframework.beans.factory.support.DefaultListableBeanFactory.d oResolveDependency(DefaultListableBeanFactory.java:1138)〜[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066 )〜[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1342)〜[spring-beans- 4.3.9.RELEASE.jar!/:4.3.9.RELEASE] ... 39个常见帧省略引起:org.springframework.beans.BeanInstantiationException:无法实例化[org.apache.ibatis.session.SqlSessionFactory]:工厂方法'sqlSessionFactory'抛出异常;嵌套异常是org.springframework.core.NestedIOException:无法解析映射资源:'URL [jar:file:C:\ Users \ KhoaNA \ Desktop \ test \ spring-boot-mybatis-0.0.1-SNAPSHOT.war!/ WEB-INF /类/ VN / HIPT / FAS / SQL / MenuMapper.xml]';嵌套异常是org.apache.ibatis.builder.BuilderException:解析Mapper XML时出错 . 原因:java.lang.IllegalArgumentException:Mapped Statements集合已经在org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189)中包含了com.techprimers.mybatis.springbootmybatis.mapper.UsersMapper.findUserById的值 . [spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE]在org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588)〜[spring-beans-4.3 . 9.RELEASE.jar!/:4.3.9.RELEASE] ...省略了51个常见帧引起:org.springframework.core.NestedIOException:无法解析映射资源:'URL [jar:file:C:\ Users \ KhoaNA \桌面\测试\ spring 启动的MyBatis-0.0.1-SNAPSHOT.war /WEB-INF/classes/vn/hipt/fas/sql/MenuMapper.xml]'!;嵌套异常是org.apache.ibatis.builder.BuilderException:解析Mapper XML时出错 . 原因:java.lang.IllegalArgumentException:Mapped Statements集合已包含com.techprimers.mybatis.springbootmybatis.mapper.UsersMapper.findUserById的值org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:523)~ [mybatis-spring -1.3.1.jar!/:1.3.1] org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:380)〜[mybatis-spring-1.3.1.jar!/:1.3.1] at org .mybatis.spring.SqlSessionFactoryBean.getObject(SqlSessionFactoryBean.java:547)~ [mybatis-spring-1.3.1.jar!/:1.3.1] at org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration.sqlSessionFactory(MybatisAutoConfiguration . java:139)〜[mybatis-spring-boot-autoconfigure-1.2.0.jar!/:1.2.0] at org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration $$ EnhancerBySpringCGLIB $$ ea2ff066.CGLIB $ sqlSessionFactory $ 1( )〜[mybatis-spring-boot-autoconfigure-1.2.0.jar!/:1.2.0] at org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration $$ EnhancerBySpring CGLIB $$ ea2ff066 $$ FastClassBySpringCGLIB $$ 311d2308.invoke()〜[mybatis-spring-boot-autoconfigure-1.2.0.jar!/:1.2.0] org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy) .java:228)〜[spring-core-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] org.springframework.context.annotation.ConfigurationClassEnhancer $ BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:358)~ [ spring-context-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] at org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration $$ EnhancerBySpringCGLIB $$ ea2ff066.sqlSessionFactory()〜[mybatis-spring-boot- autoconfigure-1.2.0.jar!/:1.2.0] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)〜[na:1.8.0_144] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)〜[na: 1.8.0_144]在org.springframework的java.lang.reflect.Method.invoke(未知来源)〜[na:1.8.0_144]的sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)〜[na:1.8.0_144] .beans.factory.support.SimpleInstantiationStrategy.instantiate (SimpleInstantiationStrategy.java:162)〜[spring-beans-4.3.9.RELEASE.jar!/:4.3.9.RELEASE] ... 52个常见的帧省略引起的:org.apache.ibatis.builder.BuilderException:Error解析Mapper XML . 原因:java.lang.IllegalArgumentException:Mapped Statements集合已经包含org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:120)中com.techprimers.mybatis.springbootmybatis.mapper.UsersMapper.findUserById的值〜 [mybatis-3.4.2.jar!/:3.4.2]在org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:92)〜[mybatis-3.4.2.jar!/:3.4 . 2]在org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:521)〜[mybatis-spring-1.3.1.jar!/:1.3.1] ... 65常见帧省略引起:java.lang .IllegalArgumentException:Mapped Statements集合已经包含了org.apache.ibatis.session.Configuration $ StrictMap.put(Configuration.java:859)〜[mybatis-3.4]中com.techprimers.mybatis.springbootmybatis.mapper.UsersMapper.findUserById的值 . 2.jar!/:3.4.2]在org.apache.ibatis.session.Configuration $ StrictMap.put(Configuration.java:831)〜[mybatis-3.4.2.jar!/:3.4.2] at atorg.apache.ibatis.session.Configuration.addMappedStatement(Configuration.java:655)〜[mybatis-3.4.2.jar!/:3.4.2] atg.apache.ibatis.builder.MapperBuilderAssistant.addMappedStatement(MapperBuilderAssistant.java :302)〜[mybatis-3.4.2.jar!/:3.4.2]在org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:109)〜[mybatis-3.4.2.jar! /:3.4.2]在org.apache.ibatis的org.apache.ibatis.builder.xml.XMLMapperBuilder.buildStatementFromContext(XMLMapperBuilder.java:135)〜[mybatis-3.4.2.jar!/:3.4.2] . 在org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:118)的builder.xml.XMLMapperBuilder.buildStatementFromContext(XMLMapperBuilder.java:128)~ [mybatis-3.4.2.jar!/:3.4.2] )〜[mybatis-3.4.2.jar!/:3.4.2] ...省略了67个常用帧

这是我的源代码:https://drive.google.com/file/d/0B72-i2S1W9r2TWVZaUhWa201M3M/view?usp=sharing

请帮我!谢谢!

2 回答

  • 1

    我从页面找到了一个解决方案:https://github.com/mybatis/spring-boot-starter/issues/106

    我应该使用默认的MyBatis Spring Boot AutoConfigure . 不要更改config mapperLocations:classpath * / mapper / * .xml .

    感谢大家!

  • 1

    我也遵循了教程 . 问题不是比利所说的 . 问题是sivalabs对mybatis.mapperLocations使用了禁用值 . 您必须使用mybatis.mapper-locations和resources的相对文件夹 . 例如:您想要扫描在功能文件夹中组织的映射器

    java
         main
         resources
                  mapper
                        feautureA
                                 featureAMapper.xml <- Mapper to scan
                        feautureB
                                 featureBMapper.xml <- Mapper to scan
    

    你必须使用一个模式:

    mybatis.mapper-locations=mapper/**/*.xml
    

相关问题