2014-06-12 2 views
1

Maven에서 Spring 4.0.5 및 MyBatis 3.2.7을 사용하고 있습니다. WEB-INF/myBatis 폴더 아래에 myBatis-config.xml 파일이 있습니다. sqlSessionFactory 빈을 만들려고 할 때 FileNotFoundError를 얻습니다.Spring + MyBatis + mvn Project, java.io.FileNotFoundException : ServletContext 리소스를 열 수 없습니다. [/classpath*:WEB-INF/myBatis-config.xml]

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
      <property name="dataSource" ref="dataSource" />   
      <property name="configLocation" value="myBatis/myBatis-config.xml" /> 
      <property name="mapperLocations" value="classpath*:com/attinad/mappers/*.xml" /> 
      </bean> 

스택 추적 :

SEVERE: Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in ServletContext resource [/WEB-INF/ds-config.xml]: Invocation of init method failed; nested exception is java.io.FileNotFoundException: Could not open ServletContext resource [/myBatis/myBatis-config.xml] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195) 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:684) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4791) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5285) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/myBatis/myBatis-config.xml] 
    at org.springframework.web.context.support.ServletContextResource.getInputStream(ServletContextResource.java:141) 
    at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:358) 
    at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:340) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549) 
    ... 21 more 

내가 값으로 /classpath*:WEB-INF/myBatis/myBatis-config.xml 퍼팅 시도

내 콩입니다 . 그러나 도움이되지 않았습니다.

디버깅에 많은 시간을 할애 해 주시면 솔루션을 찾을 수 있도록 도와주세요.

myBatis-config.xml 파일을 찾으십시오. 다음과 같이

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> 
<configuration> 
<settings> 
<setting name="cacheEnabled" value="true" /> 
<setting name="lazyLoadingEnabled" value="true" /> 
<setting name="multipleResultSetsEnabled" value="true" /> 
<setting name="useColumnLabel" value="true" /> 
<setting name="useGeneratedKeys" value="false" /> 
<setting name="defaultExecutorType" value="SIMPLE" /> 
<setting name="defaultStatementTimeout" value="100" /> 
<setting name="safeRowBoundsEnabled" value="false" /> 
<setting name="mapUnderscoreToCamelCase" value="false" /> 
<setting name="localCacheScope" value="SESSION" /> 
<setting name="jdbcTypeForNull" value="OTHER" /> 
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString" /> 
</settings> 
<typeAliases><typeAlias type="classpath*:com.attinad.model.Employee" alias="Emp"/></typeAliases> 
</configuration> 

내 매퍼 파일 EmployeeMapper.xml 파일은 다음과 같습니다

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE mapper 
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 


<mapper namespace="com.attinad.dao.EmployeeMapperInterface"> 

<select id="getEmployeeWithId" parameterType="Long" resultType="Emp"> 
     select * from 
     employees where 
     id=#{empId} 

    </select> 
</mapper> 

답변

0

두 가지 옵션이 있습니다.

  1. 당신의 myBatis-config.xmlWEB-INF/classes 내부 폴더를 배치하고 당신은 그래서 당신은 src/main/resources에서 파일을 배치하고 사용하여 참조 할 수 classpath 이미 받는다는 src/main/resources이다 사용하고 있기 때문에 classpath:myBatis-config.xml

  2. classpath:myBatis-config.xml

+0

ChandranAll WEB-INF 아래의 다른 구성 파일은 뉴욕 오류. 또한 내 web.xml 파일에서, "<상황 PARAM> 는 contextConfigLocation /WEB-INF/myBatis/myBatis-config.xml \t /WEB-INF/ds-config.xml \t/WEB \t -INF/mapper-config.xml \t "오류없이로드됩니다. 그래서 나는 왜 이것이 일어나고 있는지 이해하지 못한다. 내가 틀렸다면 나를 바로 잡아주세요. – Lakshmi

+0

옵션 2가 나를 위해 일했습니다. 감사. 왜 이런 일이 일어나는지 분명히 말하십시오. – Lakshmi

+0

: 다시 클래스를 찾을 수 없습니다. init 메소드를 호출하지 못했습니다. 중첩 예외는 'Emp'에 대한 typeAlias ​​등록 오류입니다. 원인 : java.lang.ClassNotFoundException : 클래스를 찾을 수 없습니다 : com.attinad.model.Employee 내 rest-servlet.xml 파일에 을 추가했습니다. 또한 bean "" – Lakshmi

0

내 구성은 다음과 같습니다

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="configLocation" value="WEB-INF\mybatisConf.xml" /> 
</bean> 

<bean id="sqlMapClient" class="org.mybatis.spring.SqlSessionTemplate"> 
    <constructor-arg ref="sqlSessionFactory" /> 
</bean> 

그것은 당신을 도울 것입니다 바랍니다.

관련 문제