2011-09-26 1 views
5

MyBatis 3.0.5를 사용하고 있으며 매퍼를 리소스로로드하는 데 문제가 있습니다. 저는 Windows 7 64, Eclipse Indigo 64bit 및 jdk7 64를 사용합니다. MyBatis는 독립 실행 형 인스턴스 인 Grizzly Web Container (저지 프레임 워크로 나머지 서비스가 구현되는 곳)에서 초기화됩니다.MyBatis 3.0.5 및 매퍼 로딩 문제

<mappers> 
     <mapper 
      url="file:///C:/Users/andrea/workspace/soap2rest/src/main/java/com/izs/mybatis/FormMapper.xml" /> 
     <mapper resource="src/main/java/com/izs/mybatis/FormMapper.xml" /> 
    </mappers> 

테스트 용으로 동일한 맵퍼가 있으며, 첫 번째는로드되고 두 번째는 작동하지 않습니다. 오류 :

org.apache.ibatis.exceptions.PersistenceException: 
### Error building SqlSession. 
### The error may exist in src/main/java/com/izs/mybatis/FormMapper.xml 
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource src/main/java/com/izs/mybatis/FormMapper.xml 
    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:8) 
    at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:32) 
    at com.izs.Main.initMyBatis(Main.java:114) 
    at com.izs.Main.main(Main.java:80) 
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource src/main/java/com/izs/mybatis/FormMapper.xml 
    at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:85) 
    at org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:69) 
    at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:30) 
    ... 2 more 
Caused by: java.io.IOException: Could not find resource src/main/java/com/izs/mybatis/FormMapper.xml 
    at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:89) 
    at org.apache.ibatis.io.Resources.getResourceAsStream(Resources.java:76) 
    at org.apache.ibatis.builder.xml.XMLConfigBuilder.mapperElement(XMLConfigBuilder.java:253) 
    at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:83) 
    ... 4 more 
Exception in thread "main" java.lang.NullPointerException 
    at com.izs.Main.initMyBatis(Main.java:122) 
    at com.izs.Main.main(Main.java:80) 

죄송합니다.

해결 방법 : Maven 프로젝트는 테스트를 위해 src/main/resources 및 src/test/resources에 리소스를 필요로합니다. 그래서 해결책은 xml 맵퍼를이 폴더에 넣는 것입니다.

답변

1

절대 경로를 사용하지 마십시오. 따라서 코드를 다른 환경에서 사용할 수없고 사용하지 않게 만듭니다. 단지 상대적으로 수용 가능합니다. 귀하의 예를 들어, 다음 상대 경로를 사용할 수 있습니다 같아요 :

<mapper resource="com/izs/mybatis/FormMapper.xml" /> 
+0

나는 당신의 동일한 이유로 리소스를 사용하지만 작동하지 않습니다 ... 또한 귀하의 제안을 사용합니다. – raid3n

+0

폴더 구조를 설명해 주시겠습니까? – BrownFurSeal

+0

thx를 도와 주셔서, 나는 classpath src/main/java와 패키지를 가진 Maven 프로젝트를 가지고있다. Main.java 내 src/main/java/com/izs 내에 src/main/java/com/izs/mybatis within FormMapper .xml – raid3n