java - Spring引导创建名为错误的bean时出错

标签 java mysql spring spring-boot

我的项目在 LAN 中的 PC 上正常工作,但是当我将其复制到我的计算机时,它不起作用。 错误

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'blowDownFilterController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.dem.cit.chemi.dao.ChemiSectionDao com.dem.cit.chemi.controller.BlowDownFilterController.chemiSectionDao; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ChemiSectionDao': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mainEntityManagerFactory' defined in ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/annotations/common/reflection/ReflectionManager
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
...
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.dem.cit.chemi.dao.ChemiSectionDao com.dem.cit.chemi.controller.BlowDownFilterController.chemiSectionDao; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ChemiSectionDao': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mainEntityManagerFactory' defined in ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/annotations/common/reflection/ReflectionManager
...
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'ChemiSectionDao': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mainEntityManagerFactory' defined in ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/annotations/common/reflection/ReflectionManager
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessPropertyValues(PersistenceAnnotationBeanPostProcessor.java:357) ~[spring-orm-4.1.6.RELEASE.jar:4.1.6.RELEASE]
...
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mainEntityManagerFactory' defined in ServletContext resource [/WEB-INF/mvc-dispatcher-servlet.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/annotations/common/reflection/ReflectionManager
...
Caused by: java.lang.NoClassDefFoundError: org/hibernate/annotations/common/reflection/ReflectionManager
...
Caused by: java.lang.ClassNotFoundException: org.hibernate.annotations.common.reflection.ReflectionManager
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1358) ~[catalina.jar:8.5.54]
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1180) ~[catalina.jar:8.5.54]
... 99 common frames omitted

和pom

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.2.3.RELEASE</version>
    <relativePath/>
    <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-rest</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-ws</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.25</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20141113</version>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-io</artifactId>
        <version>1.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-c3p0</artifactId>
        <version>4.3.5.Final</version>
    </dependency>
    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
        <version>3.7.6</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.6</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.lowagie</groupId>
        <artifactId>itext</artifactId>
        <version>2.1.7</version>
    </dependency>
    <dependency>
        <groupId>commons-digester</groupId>
        <artifactId>commons-digester</artifactId>
        <version>2.1</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.codehaus.groovy</groupId>
        <artifactId>groovy-all</artifactId>
        <version>1.7.0</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.6.2</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.logging</groupId>
        <artifactId>jboss-logging</artifactId>
        <version>3.4.1.Final</version>
    </dependency>

</dependencies>

<repositories>
    <repository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>http://repo.spring.io/snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>

        <plugin>
            <groupId>com.samaxes.maven</groupId>
            <artifactId>minify-maven-plugin</artifactId>
            <version>1.7.6</version>
            <executions>
                <execution>
                    <id>default-minify</id>
                    <phase>package</phase><!-- When omitted defaults to 'process-resources' -->
                    <configuration>
                        <charset>UTF-8</charset>

                        <cssSourceDir>resources/css/web</cssSourceDir>
                        <cssSourceIncludes>
                            <cssSourceInclude>**</cssSourceInclude>
                        </cssSourceIncludes>

                        <jsSourceDir>resources/js</jsSourceDir>
                        <jsSourceIncludes>
                            <jsSourceInclude>**</jsSourceInclude>
                        </jsSourceIncludes>

                    </configuration>
                    <goals>
                        <goal>minify</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.4</version>
            <configuration>
                <!-- in order to use minify filed listed bellow -->
                <warSourceExcludes>**/*.css, **/*.js</warSourceExcludes>
            </configuration>
        </plugin>

    </plugins>
</build>

和 mvc-dispathcher-servelet.xml

   <beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:tx="http://www.springframework.org/schema/tx"
   xmlns:jpa="http://www.springframework.org/schema/data/jpa"
   xmlns:mvc="http://www.springframework.org/schema/mvc"
   xmlns:p="http://www.springframework.org/schema/p"
   xsi:schemaLocation="
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
    http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
    http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

<context:component-scan base-package="com.dem.cit"/>

<mvc:resources mapping="/resources/**" location="/resources/" />

<mvc:resources mapping="/css/**" location="/resources/css/">
    <mvc:resource-chain resource-cache="true" auto-registration="true">
        <mvc:resolvers>
            <mvc:version-resolver>
                <mvc:content-version-strategy patterns="/**"/>
            </mvc:version-resolver>
        </mvc:resolvers>
    </mvc:resource-chain>
</mvc:resources>
<mvc:resources mapping="/js/**" location="/resources/js/">
    <mvc:resource-chain resource-cache="true" auto-registration="true">
        <mvc:resolvers>
            <mvc:version-resolver>
                <mvc:content-version-strategy patterns="/**"/>
            </mvc:version-resolver>
        </mvc:resolvers>
    </mvc:resource-chain>
</mvc:resources>

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/pages/"/>
    <property name="suffix" value=".jsp"/>
</bean>

<jpa:repositories base-package="com.dem.cit.main.entity"/>

<bean id="mainEntityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="mainPersistenceUnit"/>
</bean>
<bean id="mainTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="mainEntityManagerFactory" />
</bean>

<tx:annotation-driven transaction-manager="mainTransactionManager"/>

<jpa:repositories base-package="com.dem.cit.report.entity"/>

<bean id="reportEntityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="reportPersistenceUnit"/>
</bean>

<bean id="reportTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="reportEntityManagerFactory" />
</bean>
<tx:annotation-driven transaction-manager="reportTransactionManager"/>

<jpa:repositories base-package="com.dem.cit.exam.entity"/>

<bean id="examMainEntityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="examMainPersistenceUnit"/>
</bean>

<bean id="examMainTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="examMainEntityManagerFactory" />
</bean>

<tx:annotation-driven transaction-manager="examMainTransactionManager"/>

<jpa:repositories base-package="com.dem.cit.fuel.entity"/>

<bean id="fuelMainEntityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="fuelMainPersistenceUnit"/>
</bean>

<bean id="fuelMainTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="fuelMainEntityManagerFactory" />
</bean>

<tx:annotation-driven transaction-manager="fuelMainTransactionManager"/>

<jpa:repositories base-package="com.dem.cit.gate.entity"/>

<bean id="gateMainEntityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="gateMainPersistenceUnit"/>
</bean>

<bean id="gateMainTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="gateMainEntityManagerFactory" />
</bean>

<tx:annotation-driven transaction-manager="gateMainTransactionManager"/>

<jpa:repositories base-package="com.dem.cit.ticket.entity"/>

<bean id="ticketEntityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="ticketPersistenceUnit"/>
</bean>

<bean id="ticketTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="ticketEntityManagerFactory" />
</bean>

<tx:annotation-driven transaction-manager="ticketTransactionManager"/>

<jpa:repositories base-package="com.dem.cit.chemi.entity"/>

<bean id="chemiEntityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="chemiMainPersistenceUnit"/>
</bean>

<bean id="chemiTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="chemiEntityManagerFactory" />
</bean>

<tx:annotation-driven transaction-manager="chemiTransactionManager"/>

<jpa:repositories base-package="com.dem.cit.guard.entity"/>

<bean id="guardEntityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="securityGuardPersistenceUnit"/>
</bean>

<bean id="guardTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="guardEntityManagerFactory" />
</bean>

<tx:annotation-driven transaction-manager="guardTransactionManager"/>

<mvc:annotation-driven/>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" />

和 persist.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
<persistence-unit name="mainPersistenceUnit">
    <class>com.dem.cit.main.entity.main.Config</class>
    <class>com.dem.cit.main.entity.main.Location</class>
    <class>com.dem.cit.main.entity.main.Logs</class>
    <class>com.dem.cit.main.entity.main.Permission</class>
    <class>com.dem.cit.main.entity.main.Role</class>
    <class>com.dem.cit.main.entity.main.RolePermission</class>
    <class>com.dem.cit.main.entity.main.RoleWidget</class>
    <class>com.dem.cit.main.entity.main.ShariaTime</class>
    <class>com.dem.cit.main.entity.main.SubSystem</class>
    <class>com.dem.cit.main.entity.main.Tab</class>
    <class>com.dem.cit.main.entity.main.TabPermission</class>
    <class>com.dem.cit.main.entity.main.User</class>
    <class>com.dem.cit.main.entity.main.User2</class>
    <class>com.dem.cit.main.entity.main.UserConfig</class>
    <class>com.dem.cit.main.entity.main.UserConfigDefault</class>
    <class>com.dem.cit.main.entity.main.UserNote</class>
    <class>com.dem.cit.main.entity.main.UserRole</class>
    <class>com.dem.cit.main.entity.main.UserSystemConfig</class>
    <class>com.dem.cit.main.entity.main.UserSystemConfigDefault</class>
    <class>com.dem.cit.main.entity.main.UserWidget</class>
    <class>com.dem.cit.main.entity.main.Widget</class>
    <class>com.dem.cit.main.entity.main.Zone</class>
    <properties>
        <property name="hibernate.connection.url" value="jdbc:mysql://....:3306/psc_main"/>
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>

        <property name="hibernate.connection.username" value="admin"/>
        <property name="hibernate.connection.password" value="***"/>

        <property name="hibernate.show_sql" value="false"/>

        <property name="hibernate.c3p0.min_size" value="5"/>
        <property name="hibernate.c3p0.max_size" value="20"/>
        <property name="hibernate.c3p0.timeout" value="300"/>
        <property name="hibernate.c3p0.max_statements" value="50"/>
        <property name="hibernate.c3p0.idle_test_period" value="3000"/>
    </properties>
</persistence-unit>

<persistence-unit name="examMainPersistenceUnit">
    <class>com.dem.cit.exam.entity.DefaultQuestionOption</class>
    <class>com.dem.cit.exam.entity.DefaultQuestionOptionTitle</class>
    <class>com.dem.cit.exam.entity.DutyStatus</class>
    <class>com.dem.cit.exam.entity.Education</class>
    <class>com.dem.cit.exam.entity.Exam</class>
    <class>com.dem.cit.exam.entity.ExamGroup</class>
    <class>com.dem.cit.exam.entity.Examinee</class>
    <class>com.dem.cit.exam.entity.ExamineeGroup</class>
    <class>com.dem.cit.exam.entity.ExamineeStatus</class>
    <class>com.dem.cit.exam.entity.Gender</class>
    <class>com.dem.cit.exam.entity.Group</class>
    <class>com.dem.cit.exam.entity.Post</class>
    <class>com.dem.cit.exam.entity.Question</class>
    <class>com.dem.cit.exam.entity.QuestionAnswer</class>
    <class>com.dem.cit.exam.entity.QuestionOption</class>
    <class>com.dem.cit.exam.entity.QuestionType</class>
    <class>com.dem.cit.exam.entity.Result</class>
    <class>com.dem.cit.exam.entity.Score</class>
    <class>com.dem.cit.exam.entity.StatusType</class>
    <properties>
        <property name="hibernate.connection.url" value="jdbc:mysql://....:3306/psc_exam"/>
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>

        <property name="hibernate.connection.username" value="admin"/>
        <property name="hibernate.connection.password" value="***"/>

        <property name="hibernate.show_sql" value="false"/>

        <property name="hibernate.c3p0.min_size" value="5"/>
        <property name="hibernate.c3p0.max_size" value="20"/>
        <property name="hibernate.c3p0.timeout" value="300"/>
        <property name="hibernate.c3p0.max_statements" value="50"/>
        <property name="hibernate.c3p0.idle_test_period" value="3000"/>
    </properties>
</persistence-unit>
....
</persistence>

我认为这是我的 mysql 版本不同,我更改了 mysql 的依赖版本,但可能存在问题。 mysql的版本是“mysql Ver 8.0.14”,我测试了这个依赖关系

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.20</version>
</dependency>

最佳答案

发生这种情况可能是因为您完全依赖 Hibernate。由于Spring Boot还包含Hibernate依赖,因此类路径中会发生冲突,JVM无法决定使用哪个依赖。当类路径中存在相同的依赖项时,JVM 会抛出 NoClassDefFoundError。尝试从 pom.xml 中删除 Hibernate

关于java - Spring引导创建名为错误的bean时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61591283/

相关文章:

java - Spring Boot无法连接MySQL并在Docker/Docker compose中退出

mysql - 游标的不一致行为

php - SQL使用`和不使用之间的区别

java - Spring @Scheduled 默认值

java - 更新 JFrame 中的 BufferedImage

java - Spring 中的嵌套 Thymeleaf 模板

java - SCA相对于Spring的优势?

spring - Spring Security Core Grails插件问题

java - Typeface 自定义字体不起作用

mysql - 我该如何修复这个语法以使其正常工作?