java.lang.NoClassDefFoundError:org/hibernate/boot/MetadataBuilder

java.lang.NoClassDefFoundError:org/hibernate/boot/MetadataBuilder,java,hibernate,maven,spring-mvc,jpa,Java,Hibernate,Maven,Spring Mvc,Jpa,我在部署我的应用程序时出现了这个奇怪的错误,但所需的jar在我的POM文件中 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>5.0.4.Final</version> </dependency> 我甚至检查了战争,罐子就在战争里面 搜索Ctrl+Shif

我在部署我的应用程序时出现了这个奇怪的错误,但所需的jar在我的POM文件中

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.0.4.Final</version>
</dependency> 
我甚至检查了战争,罐子就在战争里面

搜索Ctrl+Shift+T时,我发现:

org.hibernate.validator.internal.metadata.aggregated.MetaDataBuilder


您使用了错误的版本
org.hibernate.boot.MetadataBuilder在版本5中提供:

$ jar tvf ~/.m2/repository/org/hibernate/hibernate-core/5.0.4.Final/hibernate-core-5.0.4.Final.jar | grep MetadataBuilder

3931 Wed Nov 18 12:22:14 CET 2015 org/hibernate/boot/MetadataBuilder.class
在版本
4.3.6.Final
中,它在另一个包中定义:

$ jar tvf ~/.m2/repository/org/hibernate/hibernate-core/4.3.6.Final/hibernate-core-4.3.6.Final.jar | grep MetadataBuilder

672 Wed Jul 16 16:28:14 CEST 2014 org/hibernate/metamodel/MetadataBuilder.class
1) hibernate.config.xml中DTD的头必须如下所示:

`<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration SYSTEM 
"classpath:/org/hibernate/hibernate-configuration-3.0.dtd">
`<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>   
        classpath:hibernate.cfg.xml                     
        </param-value>
    </context-param>`
`
`

2) 如果您在/WEB-INF中有hibernate.config.xml,请将其删除并放置在/src/main/resources中

3) 最后,您必须在web.xml文件中编写一些行,在其中调用hibernate,如下所示:

`<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration SYSTEM 
"classpath:/org/hibernate/hibernate-configuration-3.0.dtd">
`<context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>   
        classpath:hibernate.cfg.xml                     
        </param-value>
    </context-param>`
`
上下文配置位置
类路径:hibernate.cfg.xml
`

我希望它停止。莫桑比克赫尔曼

NoClassDefFoundError并不是说课堂不存在。这意味着在类路径中找不到该类的依赖项。因此,请查看该类的源代码并了解它需要什么。因此,根据IDE和项目设置,您可能需要执行某种“刷新”操作。例如,在一些具有多个pom文件的项目中,需要重新生成整个项目来修复依赖关系问题。当您在Eclipse中执行
Ctrl+Shift+T
(打开类型)并搜索
MetadataBuilder
时,您会得到多少?