我的pom.xml中包含以下内容
1
但是我仍然收到以下消息
<dependency>
<groupId>org.springframework.hateoas</groupId>
<artifactId>spring-hateoas</artifactId>
</dependency>
我尝试删除Caused by: java.lang.NoClassDefFoundError: org/springframework/hateoas/Resource
at java.lang.Class.getDeclaredMethods0(Native Method) ~[na:1.8.0_191]
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) ~[na:1.8.0_191]
at java.lang.Class.getDeclaredMethods(Class.java:1975) ~[na:1.8.0_191]
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:668) ~[spring-core-5.1.5.RELEASE.jar:5.1.5.RELEASE]
... 21 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.springframework.hateoas.Resource
at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[na:1.8.0_191]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_191]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) ~[na:1.8.0_191]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_191]
... 25 common frames omitted
文件夹的内容并再次下载所有依赖项。我尝试强制更新maven项目,但是当我启动Spring Boot项目时仍然收到消息。任何人都知道即使添加了依赖关系我也为什么要得到这个?
答案 0 :(得分:0)
对于Spring Boot,请使用spring-boot-starter-hateoas依赖项
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-hateoas</artifactId> <version>2.1.4.RELEASE</version> </dependency>
答案 1 :(得分:0)
在pom.xml中添加以下依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-hateoas</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
在控制器中编写以下方法:-
@GetMapping("/student/{id}")
public EntityModel<Student> getstudent(@PathVariable int id) {
Student student = studentRepo.findById(id).orElse(new Student());
EntityModel<Student> resource=new EntityModel<Student>(student);
Link link=WebMvcLinkBuilder.linkTo(this.getClass()).
slash(studentRepo.findAll()).withSelfRel();
resource.add(link.withRel("all-students"));
return resource;
}
答案 2 :(得分:0)
如果您明确添加了hateoas,请尝试重新启动容器,这对我有用。
答案 3 :(得分:-1)
类的ResourceSupport / Resource / Resources / PagedResources组从未真正被恰当地命名过。毕竟,这些类型实际上并不表示资源,而是表示模型,可以通过超媒体信息和提供的内容加以丰富。这是新名称映射到旧名称的方式:
ResourceSupport现在是RepresentationModel
资源现在是EntityModel
资源现在为CollectionModel
PagedResources现在是PagedModel