java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration
Posted
技术标签:
【中文标题】java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration【英文标题】: 【发布时间】:2012-04-08 17:46:41 【问题描述】:我正在尝试在 Eclipse 中使用 Hibernate 进行初始设置,同时使用 Tomcat 进行部署。
我遇到了以下问题:
java.lang.ClassNotFoundException: org.hibernate.cfg.Configuration
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1701)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1546)
db.HibernateUtil.buildSessionFactory(HibernateUtil.java:13)
db.HibernateUtil.<clinit>(HibernateUtil.java:8)
我已经在线查看了我的问题,并且我知道它与项目类路径有关。
我在我的项目中添加了一个用户库,其中包含休眠下载中“必需”目录下的所有 jar,但这似乎不起作用。
请找到我的项目here:的屏幕截图
【问题讨论】:
你试过把你的hibernate jars直接放在构建路径中吗? 根据您附加的图像,我认为您的 DOCTYPE 条目在您的 hibernate.cfg.xml 文件中。替换为下面的条目并测试它.. ttp://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd" rel="nofollow" target="_blank">hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 【参考方案1】:您收到错误是因为 Tomcat 无法使用休眠库。在您的图片中,休眠库集下方有一个名为“Web App Libraries”的空集 - 这是您的休眠库需要所在的集。
右键单击您的项目 -> 构建路径 -> 配置构建路径,然后从构建路径中删除休眠集。现在将 jars 导入 WEB-INF/lib 文件夹。刷新您的项目,现在您应该看到它们列在“Web App Libraries”集中(我很感激您必须将它们导入代码库,这有点烦人 - 其他人可能知道更好的方法来做到这一点涉及复制罐子)
【讨论】:
完成此操作后应该将休眠配置文件放在哪里? @Chris White 在 IntelliJ IDEA 中怎么样?【参考方案2】:当您的 jar 文件没有与您的网络存档一起导出时,可能会发生此错误。您可以按照@Chris White 所说的进行操作,或者如果您使用的是 Eclipse,则可以按照以下步骤操作。
Right click the project -> Build Path -> Configure Build Path
在左侧列表中单击部署程序集。点击“添加”按钮。选择“Java Build Path Entries”并点击下一步。现在选择您的休眠 jar 文件或库。点击完成。然后点击确定。 必要时重启服务器。
【讨论】:
是的,这真的很有帮助。 +1 这个解决方案更加优雅,因为它不需要在项目中复制库。我发现最好重用容器中的依赖项,而不是一直复制它们。 遇到了类似的问题,感谢您的回答能够解决!!!【参考方案3】:比 Chris White 的方法更简单。
您收到错误是因为 Tomcat 无法使用休眠库。右键单击您的项目 -> 构建路径 -> 配置构建路径,然后从构建路径中删除休眠集。
做同样的事情,但不是每次都为新项目导入 jars,而是**将所需的休眠 jars 复制到 Apache Tomcat 的 lib 文件夹中**(或您正在使用的任何服务器)。
【讨论】:
【参考方案4】:您的库文件夹中没有 hibernate jar 请访问以下链接以获取可能的解决方案,http://www.smashplus.info/2012/11/javalangnoclassdeffounderror.html
【讨论】:
以上是关于java.lang.NoClassDefFoundError: org/hibernate/cfg/Configuration的主要内容,如果未能解决你的问题,请参考以下文章