代码之家  ›  专栏  ›  技术社区  ›  Dániel Emőd Kovács

Spring数据实体管理器工厂NoClassDefFoundError

  •  1
  • Dániel Emőd Kovács  · 技术社区  · 7 年前

    我用创建了一个新的Spring REST API Spring Initializr 并增加了JPA、龙目、PostgreSQL和Spring Web。遗憾的是,我在启动时出现以下错误:

    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628) ~[spring-beans-4.3.12.RELEASE.jar!/:4.3.12.RELEASE]
    

    我可以找到很多与此相关的材料,但它们似乎都不能为我解决这个问题。我错过了什么?

    以下是我的一些配置:

    StarterApplication.java

    @SpringBootApplication
    public class StarterApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(StarterApplication.class, args);
        }
    }
    

    application.properties

    spring.datasource.url=jdbc:postgresql://localhost:5432/springapi
    spring.datasource.username=postgres
    spring.datasource.password=postgres
    spring.jpa.hibernate.ddl-auto=create-drop
    spring.datasource.driverClassName=org.postgresql.Driver
    

    还有我的 pom.xml :

    <?xml version="1.0" encoding="UTF-8"?>
    <project 
    xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>design.kde</groupId>
        <artifactId>starter</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
        <name>starter</name>
        <description>Demo project for Spring Boot</description>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.8.RELEASE</version>
            <relativePath/>
            <!-- lookup parent from repository -->
        </parent>
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
            <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-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.postgresql</groupId>
                <artifactId>postgresql</artifactId>
                <scope>runtime</scope>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>
    

    也许我在配置中遗漏了一个步骤?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Selim Ok    7 年前

    可能您使用Java 9并将以下依赖项添加到pom中。xml可能会有所帮助。

    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.0</version>
    </dependency>