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>
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 param-value> context-param> "오류없이로드됩니다. 그래서 나는 왜 이것이 일어나고 있는지 이해하지 못한다. 내가 틀렸다면 나를 바로 잡아주세요. –
Lakshmi
옵션 2가 나를 위해 일했습니다. 감사. 왜 이런 일이 일어나는지 분명히 말하십시오. – Lakshmi
: 다시 클래스를 찾을 수 없습니다. init 메소드를 호출하지 못했습니다. 중첩 예외는 'Emp'에 대한 typeAlias 등록 오류입니다. 원인 : java.lang.ClassNotFoundException : 클래스를 찾을 수 없습니다 : com.attinad.model.Employee 내 rest-servlet.xml 파일에 을 추가했습니다. 또한 bean " " –
Lakshmi