首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用tomcat 10和hibernate 5.6时,会显示一个错误:"NoClassDefFoundError: javax/persistence/Entity“

在使用tomcat 10和hibernate 5.6时,会显示一个错误:"NoClassDefFoundError: javax/persistence/Entity“
EN

Stack Overflow用户
提问于 2022-06-09 11:22:52
回答 2查看 199关注 0票数 0

我有java项目(第8版)

我将hibernate版本从5.0.3升级到5.6.9

代码语言:javascript
复制
   <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>5.6.9.Final</version>
            </dependency>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-entitymanager</artifactId>
                <version>5.6.9.Final</version>
            </dependency>

升级hibernate版本后,我尝试运行我的tomcat (10.0.20版本),并收到了下一个错误:

代码语言:javascript
复制
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [spring/db-config.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/persistence/Entity (wrong name: jakarta/persistence/Entity)

sessionFactory bean看起来是这样的:

代码语言:javascript
复制
  <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"
          depends-on="flyway">
        <property name="dataSource" ref="itpDataSource"/>
        <property name="packagesToScan" value="com.imperva.itp.domain,com.imperva.itp.commons.domain"/>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.PostgresPlusDialect</prop>
                <prop key="configurationClass">org.hibernate.cfg.Configuration</prop>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.id.new_generator_mappings">true</prop>
                <prop key="hibernate.default_schema">${itp.db.username}</prop>
            </props>
        </property>
    </bean>

我不知道它是否相关,但我的Spring版本是4.3.30。

在运行不同的组合之后:

代码语言:javascript
复制
hibernate 5.0.3.Final with tomcat 8: works properly
hibernate 5.0.3.Final with tomcat 10: works properly
hibernate 5.6.9.Final with tomcat 8: works properly
hibernate 5.6.9.Final with tomcat 10: doesn't work and the exception is thrown 

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-12 19:57:35

最后,我将spring升级到5.3.20,spring升级到5.7.1,并将javax.persistence的所有引用都更改为jakarta.persistence,并且它起了作用。我保留了hibernate版本5.6.9,tomcat和tomcat 10

票数 0
EN

Stack Overflow用户

发布于 2022-06-09 12:09:14

Tomcat 10将包名从javax更改为雅加达,第一个支持雅加达包的Spring将是未来的Spring 6。

目前,直到进一步通知,Spring 5或之前的任何版本都不会使用Tomcat 10。因此,在Spring 6发布之前,您应该等待Tomcat 10的使用。

Tomcat 9会很好地满足你的需要。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72559435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档