java 无法访问在应用程序外部定义的Sping Boot 应用程序RestController

c9qzyr3d  于 2023-02-28  发布在  Java
关注(0)|答案(1)|浏览(140)

我正在尝试第一次使用java和Spring Boot,遵循教程。
我在一个名为User的包中创建了一个名为UserController的类,在其中定义了一个端点,即www.example.com的内容:UserController.java :

package com.example.demo.user;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping(path = "/api/v1/user")
public class UserController {
    @GetMapping("/")
    public List<User> hello() {
        User myUser = new User(5000, 1, 1);
        return List.of(myUser);
    }
}

用户包还包括www.example.com中名为User的类,以及User类的getter、setter和构造函数。User.java with getters, setters and constructers for the User class.
在与用户包相同的层次结构中,我有包含以下内容的www.example.com:DemoApplication.java with the following content:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

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

我希望收到[用户]......之类的响应,但我收到404,未找到。
this是我的项目结构
我在这里做错了什么?找了很多答案都无济于事。
先谢谢你的帮助。
当我修改代码以便在www.example.com中定义端点时:DemoApplication.java as such:

package com.example.demo;

import com.example.demo.user.User;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@SpringBootApplication
@RestController
@RequestMapping(path = "/api/v1/user")
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
    @GetMapping("/")
    public List<User> hello() {
        User myUser = new User(5000, 1, 1);
        return List.of(myUser);
    }
}

端点开始按预期工作。但我希望它继续给出404,因为我没有做任何根本不同的事情。
这是我使用postman发送GET请求的端点:本地主机:8080/应用程序接口/版本1/用户/

xqk2d5yq

xqk2d5yq1#

显然问题是因为我在项目目录中使用了特殊字符。我的windows是土耳其语的,deesktop是土耳其语的Masaüstü。启用调试日志后,我意识到,当组件扫描进行时,我收到了2023-02-24T16:19:22.500+03:00 DEBUG 4796 --- [ main] .i.s.PathMatchingResourcePatternResolver : Failed to complete search in directory [C:\Users\ARDA\OneDrive\Masa%c3%bcst%c3%bc\demo\target\classes\com\example\demo] for files matching pattern [*/.class]: java.nio.file.NoSuchFileException: C:\Users\ARDA\OneDrive\Masa%c3%bcst%c3%bc\demo\target\classes\com\example\demo,这让我想到了答案。我把我的项目文件夹改到了其他地方(也需要删除文件夹名称中的空格),问题就消失了。

相关问题