lpx12301124 2015-05-18 18:11 采纳率: 0%
浏览 718

ExtendedMappings把接口Mappings 作为超类

如题 今天在用maven配置spring MVC + hibernate的时候 突然遇到了这个问题 我的java环境是1.8tomcat

 Caused by: java.lang.IncompatibleClassChangeError: class org.hibernate.cfg.ExtendedMappings has interface org.hibernate.cfg.Mappings as super class
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2472)
    at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:854)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1274)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2472)
    at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:854)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1274)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157)
    at org.hibernate.cfg.Configuration.createMappings(Configuration.java:913)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1404)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1846)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1930)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:372)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:454)
    at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:439)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1633)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)
    ... 21 more

百度看了好多问题 都说是包冲突,但是我都删掉了hibernate-annotations.jar,hibernate-commons-annotations.jar,hibernate-entitymanager.jar这几个包 还是不行
这是我的pom.xml的配置
图片说明
我也找到了ExtendedMappings类所在的位置
图片说明
jar视图是这样的
图片说明
我现在就是不明白 我没有用maven配置的时候用的是hibernate-core3.6.5没有问题 但是用了maven之后却出现了这个问题

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-03 21:52
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题是由Hibernate 4.3.x版本的特性引起的。在Hibernate 4.3.x中,它引入了ExtendedMappingsMappings两个接口。ExtendedMappingsMappings的一个子接口,并且默认继承自Mappings。这意味着在使用ExtendedMappings时,你必须提供一个实现Mappings接口的类。

    为了解决这个问题,你可以尝试以下步骤:

    1. 将你的ExtendedMappings类重写为实现Mappings接口,或者将它改为继承自Mappings接口。
    2. 在你的配置文件中,确保你在创建SessionFactory实例时调用buildSessionFactory方法,而不是直接使用createMappings方法。
    3. 如果可能的话,考虑使用Hibernate 5或更高版本,因为它们已经移除了ExtendedMappings接口。

    如果你的项目中已经有多个依赖于ExtendedMappings的模块,请考虑更新这些依赖到最新的版本,或者找到一种替代的方法来避免这个冲突。

    评论

报告相同问题?