Java 11 + Spring Boot + HATEOAS + JAXBException: класс ***, ни один из его суперкласса не известен в этом контексте - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь реализовать простой сервис и использовать ресурс HATEOAS из Spring-Boot для отображения ссылки.Когда служба запускается, в консоль выдается сообщение WARN со следующим:

javax.xml.bind.JAXBException: класс com.in28minutes.rest.webservices.restfulwebservices.user.User или любой из его суперкласс известен этому контексту

Я использую JDK 11, что заставило меня добавить зависимость, так как я получал ClassNotFoundException: "org.glassfish.jaxb: jaxb-runtime"

Но после добавления этой зависимости пружинный класс Resource HATEOAS не может быть упорядочен.

public class User {
    private Integer id;

    @Size(min=2, message="The name should have at least 2 characters")
    private String name;

    @Past
    private LocalDate birthDate;

    public User() {
    }

    public User(Integer id, String name, LocalDate birthDate) {
        super();
        this.id = id;
        this.name = name;
        this.birthDate = birthDate;
    }
...
}
@GetMapping("/users/{id}")
public Resource<User> retrieveUser(@PathVariable("id") int theId) {
    User aUserResult = service.findOne(theId);

    if (aUserResult == null) {
        throw new UserNotFoundException("id-" + theId);
    }

    Resource<User> aUserResource = new Resource<User>(aUserResult);

    ControllerLinkBuilder aLinkTo = linkTo(methodOn(this.getClass()).retrieveAllUsers());
    aUserResource.add(aLinkTo.withRel("all-users"));
    return aUserResource;
}

1 Ответ

0 голосов
/ 23 марта 2019

странно, это связано с браузером.это должно работать, если вы вызываете конечную точку, используя клиент, например, «curl» вместо браузера.Обходной путь, который мне помог - добавьте:

 , produces="application/json; charset=UTF-8"

к GetMapping()

подробнее на: https://github.com/spring-guides/tut-rest/issues/64

...