在尝试使用hibernate工具生成pojos或映射时,我得到了一个noclassdeffounderror

时间:2012-06-25 14:35:39

标签: eclipse hibernate code-generation pojo hibernate-tools

我试图从我的数据库生成pojos但我在eclipse indigo 3.7.2上安装了hibernate工具3.4插件并且hibernate 3.6.10库(它们似乎都是)中出现以下错误我的构建路径

简短版本:

org.hibernate.console.HibernateConsoleRuntimeException: Received a NoClassDefFoundError, probably the console configuration classpath is incomplete or contains conflicting versions of the same class
Received a NoClassDefFoundError, probably the console configuration classpath is incomplete or contains conflicting versions of the same class
  java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.cfg.reveng.OverrideRepository
  Could not initialize class org.hibernate.cfg.reveng.OverrideRepository
    java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.cfg.reveng.OverrideRepository
    Could not initialize class org.hibernate.cfg.reveng.OverrideRepository

来自项目构建路径的MY罐子(按顺序重要):

  • hibernate-distribution-3.6.10.Final \ hibernate.jar文件
  • hibernate-distribution-3.6.10.Final \ lib中\需要\ ANTLR-2.7.6.jar
  • hibernate-distribution-3.6.10.Final \ lib中\需要\公地集合-3.1.jar
  • hibernate-distribution-3.6.10.Final \ lib中\需要\ DOM4J-1.6.1.jar
  • hibernate-distribution-3.6.10.Final \ lib中\需要\了Javassist-3.12.0.GA.jar
  • hibernate-distribution-3.6.10.Final \ lib中\需要\ JTA-1.1.jar
  • hibernate-distribution-3.6.10.Final \ lib中\需要\ SLF4J-API-1.6.1.jar
  • 的PostgreSQL-9.0-802.jdbc3.jar

我注意到hibernate工具插件在其插件文件夹BTW中有一些较旧的jar(slf4j例如版本为1.5.8) 与此同时,我将尝试使用buddyloading

NORMAL STACKTRACE

ENTRY org.hibernate.eclipse.console 4 666 2012-06-25 04:23:55.946
!MESSAGE org.hibernate.console.HibernateConsoleRuntimeException: Received a NoClassDefFoundError, probably the console configuration classpath is incomplete or contains conflicting versions of the same class
!STACK 0
org.hibernate.console.HibernateConsoleRuntimeException: Received a NoClassDefFoundError, probably the console configuration classpath is incomplete or contains conflicting versions of the same class
    at org.jboss.tools.hibernate3_6.console.ConsoleExtension3_6.launchExporters(ConsoleExtension3_6.java:149)
    at org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate.launch(CodeGenerationLaunchDelegate.java:270)
    at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:854)
    at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:703)
    at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:928)
    at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1132)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.cfg.reveng.OverrideRepository
    at org.jboss.tools.hibernate3_6.console.ConsoleExtension3_6$3.execute(ConsoleExtension3_6.java:249)
    at org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:63)
    at org.jboss.tools.hibernate3_6.HibernateExtension3_6.execute(HibernateExtension3_6.java:201)
    at org.jboss.tools.hibernate3_6.console.ConsoleExtension3_6.buildConfiguration(ConsoleExtension3_6.java:239)
    at org.jboss.tools.hibernate3_6.console.ConsoleExtension3_6.runExporters(ConsoleExtension3_6.java:169)
    at org.jboss.tools.hibernate3_6.console.ConsoleExtension3_6.launchExporters(ConsoleExtension3_6.java:126)
    ... 6 more
!SUBENTRY 1 org.hibernate.eclipse.console 4 666 2012-06-25 04:23:55.946
!MESSAGE org.hibernate.console.HibernateConsoleRuntimeException: Received a NoClassDefFoundError, probably the console configuration classpath is incomplete or contains conflicting versions of the same class
!STACK 0
org.hibernate.console.HibernateConsoleRuntimeException: Received a NoClassDefFoundError, probably the console configuration classpath is incomplete or contains conflicting versions of the same class
    at org.jboss.tools.hibernate3_6.console.ConsoleExtension3_6.launchExporters(ConsoleExtension3_6.java:149)
    at org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate.launch(CodeGenerationLaunchDelegate.java:270)
    at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:854)
    at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:703)
    at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:928)
    at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1132)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.cfg.reveng.OverrideRepository
    at org.jboss.tools.hibernate3_6.console.ConsoleExtension3_6$3.execute(ConsoleExtension3_6.java:249)
    at org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:63)
    at org.jboss.tools.hibernate3_6.HibernateExtension3_6.execute(HibernateExtension3_6.java:201)
    at org.jboss.tools.hibernate3_6.console.ConsoleExtension3_6.buildConfiguration(ConsoleExtension3_6.java:239)
    at org.jboss.tools.hibernate3_6.console.ConsoleExtension3_6.runExporters(ConsoleExtension3_6.java:169)
    at org.jboss.tools.hibernate3_6.console.ConsoleExtension3_6.launchExporters(ConsoleExtension3_6.java:126)
    ... 6 more
!SUBENTRY 1 org.hibernate.eclipse.console 4 666 2012-06-25 04:23:55.946
!MESSAGE java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.cfg.reveng.OverrideRepository
!STACK 0
java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.cfg.reveng.OverrideRepository
    at org.jboss.tools.hibernate3_6.console.ConsoleExtension3_6$3.execute(ConsoleExtension3_6.java:249)
    at org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:63)
    at org.jboss.tools.hibernate3_6.HibernateExtension3_6.execute(HibernateExtension3_6.java:201)
    at org.jboss.tools.hibernate3_6.console.ConsoleExtension3_6.buildConfiguration(ConsoleExtension3_6.java:239)
    at org.jboss.tools.hibernate3_6.console.ConsoleExtension3_6.runExporters(ConsoleExtension3_6.java:169)
    at org.jboss.tools.hibernate3_6.console.ConsoleExtension3_6.launchExporters(ConsoleExtension3_6.java:126)
    at org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate.launch(CodeGenerationLaunchDelegate.java:270)
    at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:854)
    at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:703)
    at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:928)
    at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1132)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)  

我第一次尝试使用代码生成时,得到了类似的结果:

org.hibernate.console.HibernateConsoleRuntimeException: Received a NoClassDefFoundError, probably the console configuration classpath is incomplete or contains conflicting versions of the same class Received a NoClassDefFoundError, probably the console configuration classpath is incomplete or contains conflicting versions of the same class   java.lang.NoClassDefFoundError: org/objectweb/asm/Type   org/objectweb/asm/Type    
java.lang.NoClassDefFoundError: org/objectweb/asm/Type org/objectweb/asm/Type          
java.lang.ClassNotFoundException: org.objectweb.asm.Type     org.objectweb.asm.Type    

之后我只得到[...]cfg.reveng.OverrideRepository error

3 个答案:

答案 0 :(得分:6)

经过NoclassDefFoundError for Hours的严重困难后,我终于找到了解决方案。

主要焦点:hibernate版本的库应该与所选的Hibernate版本的控制台配置相匹配(第3点)。

核对清单:

  1. 确保您已下载最新版本的Hibernate插件(适合您的eclipse版本)。要获得它,请转到Help-> Eclipse Marketplace-> type:hibernate(eclipse版本名称,例如luna)。选择最新的JBoss工具,并选择Hibernate和JBoss Maven Hibernate配置器来实现最低功能。

  2. http://hibernate.org/orm/downloads/下载最新的jar文件。将这些文件存储在构建路径中的文件夹中。

  3. 创建Hibernate控制台配置时,请确保从下拉列表中选择最新的Hibernate版本。例如在我的情况下,因为我在构建路径中有Hibernate 4.x jar文件,所以选择版本4.3。解决了问题。

  4. 尝试从控制台配置的下拉列表中更改Hibernate版本。它可以解决问题。

答案 1 :(得分:3)

正确答案:https://community.jboss.org/thread/201634?tstart=0
如果有人要添加任何东西,请花点时间做,就像我一样。

由于

而BTW我无法相信社区中的任何人都遇到过这个错误/问题

答案 2 :(得分:-2)

我在处理hibernate逆向工程时遇到了这个问题,我遭遇了将近3天,但我终于得到了解决方案。

  1. 为了处理hibernate逆向工程,你不需要显式地添加任何与hibernate相关的jar,因为它随hibernate工具插件一起提供,只有你需要为它添加jdbc jar。相应的数据库。

  2. 创建项目后,您将在eclipse的视角中选择hibernate选项,然后您将选择File => New =>Hibernate Console Configuration

  3. 在这里,您必须执行hibernate控制台配置,因为您拥有“ Hibernate版本”,确保您在此处选择的版本与创建时必须选择的相同Hibernate配置文件这只是 hibernate.cfg.xml ,如果您这样做,您将不会收到此错误:

  4.   

    org.hibernate.console.HibernateConsoleRuntimeException:收到NoClassDefFoundError,可能是控制台配置类路径不完整或包含同一类的冲突版本