今天在执行 mvn org.codehaus.mojo:hibernate3-maven-plugin:2.2:hbm2ddl
命令的时候出现下面的错误:
Failed to execute goal org.codehaus.mojo:hibernate3-maven-plugin:2.2:hbm2ddl (default-cli) on project jiutonepsi-model: Execution default-cli of goal org.codehaus.mojo:hibernate3-maven-plugin:2.2:hbm2ddl failed: Unable to load class declared as
in the configuration:
可以确定的是mapping中定义的类是存在的,编译也没有任何问题。于是使用 mvn org.codehaus.mojo:hibernate3-maven-plugin:2.2:hbm2ddl -X -e
命令使用调试模式,最后发现出现的错误如下:
Caused by: java.lang.ClassNotFoundException: com.example.pkg.Example
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:244)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:230)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:123)
at org.hibernate.cfg.AnnotationConfiguration.parseMappingElement(AnnotationConfiguration.java:647)
... 35 more
而类文件明明是存在的,而且已经编译成功了。查阅了一些资料,所列出的问题都不存在。后来突然想到会不会是运行maven的jdk版本太低的原因,果然发现是JDK1.6,于是换成1.7之后错误消失。
注意:这里的JDK是运行maven的JDK,跟项目的JDK可以不一致。
参考资料:
配置hibernate时出错原因及解决方案
generate hibernate dao and ddl with maven plugin