Java 创建名为';实体管理工厂&x27;在类路径资源中定义-SO的解决方案不起作用

Java 创建名为';实体管理工厂&x27;在类路径资源中定义-SO的解决方案不起作用,java,spring,spring-boot,bean-validation,Java,Spring,Spring Boot,Bean Validation,我将Form1.5.9Springboot迁移到了2.1.1,出现了这个错误。我在这个网站上添加了来自不同问题的新依赖项,但它没有改变任何东西。 新的依赖关系是: javax.xml.bind 这里是stacktrace(完整的stacktrace在那里,我不能粘贴在这里,因为它太长了:) 三个实体: package bookrental.model.book; import lombok.*; import javax.persistence.*; import javax.valid

我将Form1.5.9Springboot迁移到了2.1.1,出现了这个错误。我在这个网站上添加了来自不同问题的新依赖项,但它没有改变任何东西。 新的依赖关系是:

  • javax.xml.bind
这里是stacktrace(完整的stacktrace在那里,我不能粘贴在这里,因为它太长了:)

三个实体:

package bookrental.model.book;

import lombok.*;

import javax.persistence.*;
import javax.validation.constraints.NotNull;

@Entity
@Getter
@Setter
@EqualsAndHashCode
@AllArgsConstructor
@NoArgsConstructor
public class Book {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    @NotNull
    private String title;
    @NotNull
    private String author;
    @NotNull
    private String category;
    private boolean available;

    public Book(String title, String author, String category, boolean available) {
        this.title = title;
        this.author = author;
        this.category = category;
        this.available = available;
    }
}
图书租赁:

package bookrental.model.book;

import bookrental.model.account.User;
import lombok.*;

import javax.persistence.*;
import java.time.LocalDateTime;
import java.util.Date;

@Entity
@Getter
@Setter
@EqualsAndHashCode
@AllArgsConstructor
@NoArgsConstructor
public class BookRentals {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    @OneToOne
    private Book book;
    @OneToOne
    private User user;
    private LocalDateTime dateOfRental;

    public BookRentals(Book book, User user) {
        this.book = book;
        this.user = user;
    }
}
用户类别:

package bookrental.model.account;

import lombok.*;

import javax.persistence.*;

@Entity
@Getter
@Setter
@EqualsAndHashCode
@AllArgsConstructor
@NoArgsConstructor
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    private String name;
    private String password;

    public User(String name, String password) {
        this.name = name;
        this.password = password;
    }

    public User(int userID) {
        this.id = userID;
    }
}

您能详细回答我该怎么办吗?

此类仅在验证API 2.0后可用:

考虑升级此依赖项的版本:

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>

javax.validation

你有什么理由把这个包括在内吗

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>

javax.validation
验证api
1.1.0.1最终版本
排除验证api后,pom.xml可以正常工作,如下所示:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.22</version>
    </dependency>
    <dependency>
        <groupId>net.sf.flexjson</groupId>
        <artifactId>flexjson</artifactId>
        <version>2.1</version>
    </dependency>
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
    </dependency>
    <!-- make sure your code works if you are including this -->
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
    </dependency>
</dependencies>

org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧起动试验
测试
org.springframework.boot
spring引导启动器数据jpa
com.h2数据库
氢
org.projectlombok
龙目
1.16.22
net.sf.flexjson
flexjson
2.1
javax.xml.bind
jaxb api
javax.validation
验证api

原因:java.lang.NoClassDefFoundError:javax/validation/ClockProvider
您的问题就在这里。尝试为新版本的javax.validation添加依赖项,它应该可以解决您的问题,并将问题标记为“bean validation”,而不是JPA,因为这就是问题所在is@BillyFrost好吧,出于某种原因,我需要添加它。但事实就是如此
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>
<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>1.1.0.Final</version>
</dependency>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.22</version>
    </dependency>
    <dependency>
        <groupId>net.sf.flexjson</groupId>
        <artifactId>flexjson</artifactId>
        <version>2.1</version>
    </dependency>
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
    </dependency>
    <!-- make sure your code works if you are including this -->
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
    </dependency>
</dependencies>