报错如下:
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>
之后启动项目的时候一直报上面那个错误。请问要怎么修改过来?
<list>
<value>classpath*:mybatis/mapper/**/*.xml</value>
</list>
1<property name="mapperLocations"> 2 <list> 3 <value>classpath*:com/textupload/mapper/**/*.xml</value> 4 </list> 5</property>
改成这种形式嘛?没有用处,还是一样的错误。
@非也非: 那看你项目dao层的包结构到底是什么样子的?
@让我发会呆: emmm,是这样的
我applicationContext.xml中配置路径是我目前项目结构的路径,没有问题。
就是在项目启动时报的那个错并不是我配置文件中的classpath。不知道这是怎么回事
@非也非: 这样试试 <value>classpath*:com/textupload/**/*.xml</value>
@让我发会呆: 还是同样的这个错,我觉得可能不是我这个classpath的错。
[classpath:com/fileUpload/mapping/*.xml]这个报错的路径是我之前项目的路径
现在我改成[classpath:com/textupload/mapping/*.xml]之后,项目找的还是之前的classpath,不知道这是什么原因。如果是在不行,我看重新写applicationContext.xml配置能不能解决。
@非也非: 这样的话,你看下面那个src下面的包路径是不是和上面那个不一样
@让我发会呆: 嗯,问题解决。但是方法是将项目的整个目录名都改成之前的这个:com/fileUpload/。
还是不知道具体的原因是什么。猜测大概是初建maven项目时的项目名和包名在之后改变的话,启动时搜索路径还是不会变嘛?
@非也非: 就是项目中,有时候.java文件的路径会和.class文件的路径不一样,我之前就是修改包结构的时候遇到过这种问题
看你的资源路径寻址吧,可能是 classpath 寻址位置不对。 classpath*: xxx 是一种解决方式。如果不能解决,多半是你打包或者运行时资源路径对应不上
嗯,classpath配置的路径没有问题。问题是项目启动报错的classpath并不是我配置文件中的classpath,请问这个需要怎么解决啊?
@非也非: 重新编译一次。 把之前的编译结果清除就好了
@风云力: 问题解决了,不清楚具体原因。但是我把项目的包名都改回之前的就好了。
路径没有错 重新加载一下项目:project--->右键clean--确定再把资源刷新试一下
不是缓存的问题。把项目包名改回去跟报错提示的那个路径一样才不报错。还是不清楚具体是什么原因