1

我正在尝试使用 Hibernate 工具对我的 Oracle 数据库进行逆向工程。但是,当我尝试这样做时,我收到以下错误:

Received a NoClassDefFoundError, propably the console configuration classpath is
incomplete or contains conflicting versions of the same class.
java.lang.NoClassDefFoundError: Could not initialize org.hibernate.tool.version

我读到由于 Hibernate Tools Jar 和常规 Hibernate Jars 之间的冲突,可能会发生这种情况。我删除了我的 Maven-Import 并手动添加了 Hibernate-Jar(只有解决方案中描述的 core-jar)。
我正在使用Development Milestone 4.0.0 of Hibernate Tools,我将工具配置中的 Hibernate 版本设置为 4.0,并使用当前的 Hibernate 4.1.7。我也尝试了 Hibernate 4.0.0-Core-Jar,但每次组合我都得到了同样的错误。
哦,我使用的是 STS 3.1.0(但不要认为是那样)。

任何提示/建议将不胜感激。

4

3 回答 3

1

好的,发现错误:我尝试了各种版本,最后 hibernate-annotations-3.5.6 工作。一定是一些奇怪的组合产生了错误。无论如何,感谢您的回答。

于 2012-11-28T20:28:58.840 回答
0

当针对具有较新版本 WSDL 的 Web 服务使用 cxf 生成的 java 存根时,我看到了相同的错误,但在完全不同的上下文中,当发生这种情况时,SOAP 响应可能包含 CXF(或其他东西)会尝试的 xml 元素序列化为 java 类/对象,当找不到与 SOAP 响应中的新元素对应的 java 类时,可能会抛出此错误。

故事的寓意,请确保您使用的 Java 客户端(包含存根的 jar 集)的版本与服务提供者兼容。

于 2012-11-28T18:37:33.347 回答
0

这是删除一些显然与 hibernate-tools 插件自己的 jar 冲突的 hibernate 3.6 jar 的问题。

以下是成功对数据库表进行逆向工程而不会出现我遇到的错误所需做的事情:

您必须在项目构建路径中仅包含 hibernate3.jar 和 jdbc 驱动程序(postgresql-9.0-blabla.jar),其他(antlr、dom4j、slf4j、jta 等)应删除;我没有尝试在 JPA 模式下进行逆向工程,但我认为您必须将 hinernate-jpa-2.0-api-blabla.jar 保留在项目的构建路径中。

完成使用 hibernate-tools 插件后,您必须包含其他 jar,否则休眠代码将无法工作(我想,我还没有测试过,但如果 3.6 的文档这么说......)

于 2012-11-28T18:36:16.843 回答