从Hibernate抛出Duplicate class/entity mapping异常来看eclipse配置编译输出路径

事情原因:

运行项目中的Spring JUnit测试用例,抛出以下异常,但是项目单单Run on Server在Tomcat下跑却没有问题。
Caused by: org.hibernate.DuplicateMappingException: Duplicate class/entity mapping net.neoremind.bo.User
 

排查:

打开log4j的DEBUG模式,会打印出Spring去哪些路径地下寻找,发现这么一句:
Resolved location pattern [classpath*:/net/neoremind/test/**/*-bd.hbm.xml] to resources [file [E:\workspace\zhangxu\wm123\build\classes\com\baidu\wm123\user\mapping\userAccount-bd.hbm.xml], file [E:\workspace\zhangxu\wm123\WebRoot\WEB-INF\classes\com\baidu\wm123\user\mapping\userAccount-bd.hbm.xml]]
 
问题就在这里,分别去build目录下和WEB-INF/classes路径下寻找类文件,也就是两个路径都是CLASSPATH了,这肯定报错啊!
 

解决办法:

右键单击项目 -> 属性
修改build path的默认输出路径为WEB-INF/classes即可。
 

Leave a Comment.