执行hbm2ddl命令时出现hbm2ddl failed: Unable to load class declared as ... 错误

今天在执行 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

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注