首页 新闻 搜索 专区 学院

spring整合mybatis框架,项目启动时报找不到sqlSessionFactory配置路径

0
悬赏园豆:10 [已解决问题] 解决于 2018-02-08 11:23

报错如下:

1 [org.mybatis.spring.mapper.ClassPathMapperScanner] - No MyBatis mapper was found in '[com.fileupload.dao]' package. Please check your configuration.
2 [org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor] - JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
3 [org.springframework.web.context.support.XmlWebApplicationContext] - Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'java.lang.String' to required type 'org.springframework.core.io.Resource[]' for property 'mapperLocations'; nested exception is java.lang.IllegalArgumentException: Could not resolve resource location pattern [classpath:com/fileUpload/mapping/*.xml]: class path resource [com/fileUpload/mapping/] cannot be resolved to URL because it does not exist
4   [org.springframework.web.context.ContextLoader] - Context initialization failed
5   org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'java.lang.String' to required type 'org.springframework.core.io.Resource[]' for property 'mapperLocations'; nested exception is java.lang.IllegalArgumentException: Could not resolve resource location pattern [classpath:com/fileUpload/mapping/*.xml]: class path resource [com/fileUpload/mapping/] cannot be resolved to URL because it does not exist
6     

之前项目路径是上面这个

[classpath:com/fileUpload/mapping/*.xml]没错,但是后来重建了一个新项目,在applicationContext.xml
中的配置路径改变了:
1 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
2         <property name="dataSource" ref="dataSource"/>
3         <!-- 自动扫描mapping.xml文件 -->  
4         <property name="mapperLocations"
            value="classpath:com/textupload/mapping/*.xml" /> 5 </bean>

之后启动项目的时候一直报上面那个错误。请问要怎么修改过来?

非也非的主页 非也非 | 初学一级 | 园豆:192
提问于:2018-02-06 15:54
< >
分享
最佳答案
0

<list>

      <value>classpath*:mybatis/mapper/**/*.xml</value>

</list>

收获园豆:10
让我发会呆 | 老鸟四级 |园豆:2673 | 2018-02-06 16:51
1<property name="mapperLocations">
2     <list>
3        <value>classpath*:com/textupload/mapper/**/*.xml</value>
4     </list>
5</property>

改成这种形式嘛?没有用处,还是一样的错误。

非也非 | 园豆:192 (初学一级) | 2018-02-06 16:59

@非也非: 那看你项目dao层的包结构到底是什么样子的?

让我发会呆 | 园豆:2673 (老鸟四级) | 2018-02-06 17:20

@让我发会呆: emmm,是这样的

我applicationContext.xml中配置路径是我目前项目结构的路径,没有问题。

就是在项目启动时报的那个错并不是我配置文件中的classpath。不知道这是怎么回事

非也非 | 园豆:192 (初学一级) | 2018-02-06 17:47

@非也非: 这样试试 <value>classpath*:com/textupload/**/*.xml</value>

让我发会呆 | 园豆:2673 (老鸟四级) | 2018-02-06 17:50

@让我发会呆: 还是同样的这个错,我觉得可能不是我这个classpath的错。

[classpath:com/fileUpload/mapping/*.xml]这个报错的路径是我之前项目的路径

现在我改成[classpath:com/textupload/mapping/*.xml]之后,项目找的还是之前的classpath,不知道这是什么原因。如果是在不行,我看重新写applicationContext.xml配置能不能解决。

非也非 | 园豆:192 (初学一级) | 2018-02-06 18:01

@非也非: 这样的话,你看下面那个src下面的包路径是不是和上面那个不一样

让我发会呆 | 园豆:2673 (老鸟四级) | 2018-02-06 18:18

@让我发会呆: 嗯,问题解决。但是方法是将项目的整个目录名都改成之前的这个:com/fileUpload/。

还是不知道具体的原因是什么。猜测大概是初建maven项目时的项目名和包名在之后改变的话,启动时搜索路径还是不会变嘛?

非也非 | 园豆:192 (初学一级) | 2018-02-07 10:10

@非也非: 就是项目中,有时候.java文件的路径会和.class文件的路径不一样,我之前就是修改包结构的时候遇到过这种问题

让我发会呆 | 园豆:2673 (老鸟四级) | 2018-02-07 11:28
其他回答(2)
0

看你的资源路径寻址吧,可能是 classpath 寻址位置不对。 classpath*: xxx 是一种解决方式。如果不能解决,多半是你打包或者运行时资源路径对应不上

风云力 | 园豆:541 (小虾三级) | 2018-02-06 17:37

嗯,classpath配置的路径没有问题。问题是项目启动报错的classpath并不是我配置文件中的classpath,请问这个需要怎么解决啊?

支持(0) 反对(0) 非也非 | 园豆:192 (初学一级) | 2018-02-06 17:52

@非也非: 重新编译一次。 把之前的编译结果清除就好了

支持(0) 反对(0) 风云力 | 园豆:541 (小虾三级) | 2018-02-06 18:04

@风云力: 问题解决了,不清楚具体原因。但是我把项目的包名都改回之前的就好了。

支持(0) 反对(0) 非也非 | 园豆:192 (初学一级) | 2018-02-07 10:12
0

路径没有错 重新加载一下项目:project--->右键clean--确定再把资源刷新试一下

这片海 | 园豆:178 (初学一级) | 2018-02-06 18:03

不是缓存的问题。把项目包名改回去跟报错提示的那个路径一样才不报错。还是不清楚具体是什么原因

支持(0) 反对(0) 非也非 | 园豆:192 (初学一级) | 2018-02-07 10:16
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册