gpt4 book ai didi

java - Spring + Hibernate 初始化错误 : Cannot find class []

转载 作者:行者123 更新时间:2023-11-30 11:35:06 25 4
gpt4 key购买 nike

今晚我已经发疯了一段时间,试图在 java 中使用 Spring MVC 和 Hibernate 运行一个简单的项目。基本上我从一个错误到另一个错误,但它们都是由于缺少 jar 文件这一事实造成的,我立即解决了这个问题,将依赖项添加到 Maven 中。这一直有效,直到出现此错误:

org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'emf' defined in ServletContext resource
[/WEB-INF/spring/root-context.xml]: Invocation of init method failed;
nested exception is java.lang.IllegalArgumentException: Cannot find class [Hibernate]

现在,奇怪的是找不到该类,异常是非法参数而不是 ClassNotFound 或类似的东西。

我在 servlet-context 中设置了这个

<context:load-time-weaver/> 

根上下文是:

<bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

<bean id="emf"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
</bean>

<bean id="taskRepo" class="com.leandro.dao.GenericRepository">
<constructor-arg>
<value>com.leandro.models.Task</value>
</constructor-arg>
</bean>

显然无法生成 emf bean,应该在这一行将其注入(inject)到 Generic Repo 中:

@PersistenceContext
private EntityManager em;
public void setEntityManager(EntityManager em) {
this.em = em;
}

我整晚都在研究这个,有谁知道我可能遗漏了什么吗?

更新:根据要求,这是持久性 xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="testmvc" transaction-type="RESOURCE_LOCAL">
<provider>Hibernate</provider>
<class>com.leandro.models.Task</class>
<properties>
<property name="hibernate.connection.username" value="***"/>
<property name="hibernate.connection.password" value="***"/>
<property name="hibernate.connection.url" value="jdbc:sqlserver://localhost\SQLEXPRESS;databaseName=CoveyTMM"/>
<property name="hibernate.connection.driver_class" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
<property name="javax.persistence.jdbc.url" value="jdbc:sqlserver://localhost\SQLEXPRESS;databaseName=CoveyTMM"/>
<property name="javax.persistence.jdbc.user" value="***"/>
<property name="javax.persistence.jdbc.password" value="***"/>
<property name="javax.persistence.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
</properties>
</persistence-unit>
</persistence>

最佳答案

正如@sgp15 所建议的,问题出在持久性文件中。将其添加到问题后,我立即注意到出了点问题。我将指定提供商的行更改为:

<provider>org.hibernate.ejb.HibernatePersistence</provider>

Spring 能够承载它。

PS:作为奖励,我注意到还有其他错误,其中一个是由根上下文引起的。我只是删除了这一行:<context:load-time-weaver/>因为我正在使用 Hibernate 支持的 JPA 在 tomcat 上进行部署:reference

关于java - Spring + Hibernate 初始化错误 : Cannot find class [<providername>],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15307125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com