2011-09-26 38 views
5

我正在使用MyBatis 3.0.5,並且我有作爲資源加載映射器的問題。我在Windows 7 64上,使用Eclipse Indigo 64bit和jdk7 64. MyBatis在Grizzly Web容器(其中實現了帶有澤西框架的休息服務)獨立實例中初始化。MyBatis 3.0.5和mappers加載問題

<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) 

對不起,我的英語。

SOLUTION: Maven項目需要資源投入的src/main /資源和src /測試/資源測試。所以解決方法是將xml映射器放入這些文件夾中。

回答

1

請勿使用絕對路徑。它使你的代碼在另一個環境中變得不可移植和未使用。相對可以接受。對於你的例子,我猜你可以使用下面的相對路徑:

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

我會使用資源的原因相同,但他們不工作...也使用您的建議。 – raid3n

+0

您能否介紹一下您的文件夾結構? – BrownFurSeal

+0

THX的幫助,我有classpath中的src/main/java和包Maven項目: 的src/main/JAVA/COM /內Main.java IZS 的src/main/JAVA/COM/IZS /內FormMapper的MyBatis .xml – raid3n