当前位置: 首页 > 知识库问答 >
问题:

获取Spring BootREST应用程序的“无可用消息”错误

慕容嘉熙
2023-03-14

我已经创建了演示Spring Boot项目,并实现了这里所示的Restful服务

@RestController
public class GreetingsController {
    @RequestMapping(value="/api/greetings", method=RequestMethod.GET, produces=MediaType.APPLICATION_JSON_VALUE)
    public ResponseEntity<String> getGreetings(){
        return new ResponseEntity<String>("Hello World", HttpStatus.OK);
    }
}

当我试图调用邮递员工具与url"http://localhost:8080/api/greetings"作为请求方法GET服务,我得到下面的错误消息

{
  "timestamp": 1449495844177,
  "status": 404,
  "error": "Not Found",
  "message": "No message available",
  "path": "/api/greetings"
}

对于每个Spring Boot应用程序,我不必在web中配置Spring Dispatcher servlet。xml。

有人能帮我找出这里缺失的点吗?

共有3个答案

简烨烁
2023-03-14

这可以帮助某人,就像我的情况一样。

确保控制器的包名是Spring main方法包的派生(或子)包。

例如:

如果主方法包是com。公司演示。示例那么控制器包应该类似于com。公司演示。实例控制器(如果指定类似于com.company.demo.controller的内容,它将无法工作!)。

奚修伟
2023-03-14

三种可能的解决办法:

1)确保具有@Controller的YourController.java文件和具有@SpringBootApplication的YourSpringBootFile.java文件在同一个包中。

所以你知道我在说什么,这是我的WebController.java文件:

@RestController
public class WebController {
private static final String template = "Hello, %s!";
    private final AtomicLong counter = new AtomicLong();

    @RequestMapping(value= "/hi", method = RequestMethod.GET)
    public @ResponseBody Greeting sayHello(
            @RequestParam(value = "name", required = false, defaultValue = "Stranger") String name) {
        System.out.println("Inside sayHello() of WebController.java");
        return new Greeting(counter.incrementAndGet(), String.format(template, name));
    }
}

这是我的JsonPostExampleProj1应用程序。爪哇:

@SpringBootApplication
public class JsonPostExampleProj1Application {

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

2) 如果希望控制器位于SpringBootFile之外的其他包中。java的包,然后按照以下说明=Spring:Run application main方法中的多个“SpringApplication.Run()”

3) 尝试在控制器类的顶部使用@RestController而不是@Controller。

叶冥夜
2023-03-14

您可能缺少@springbootplication

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

@SpringBootApplication
public class Application {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);
    }
}

@springbootplication包括扫描其所在包和所有子包的@ComponentScan。您的控制器可能不在其中任何一个中。

 类似资料:
  • 2020-01-28T01:42:46.028688+00:00 Heroku[web.1]:使用命令启动进程 2020-01-28T01:42:45.000000+00:00APP[api]:生成成功 2020-01-28T01:42:48.451589+00:00Heroku[web.1]:状态从启动更改为崩溃 2020-01-28T01:42:48.433700+00:00 Heroku[W

  • 我正在Swift中开发一个iOS应用程序,使用AWS Cognito处理用户登录和注册。我发现,当用户做Cognito不允许的事情时(登录时输入错误的用户名/密码,试图创建不符合要求的密码等),应用程序将显示错误消息,如。我注意到,不同的操作可能会导致不同的错误代码,但我希望使错误消息更具描述性,以便我的用户能够真正知道他们做错了什么。 目前,我通过检查用于登录/注册/etc.任务,如果此检查返回

  • 我创建了一个spring boot web应用程序(在IntelliJ IDEA中),它在本地运行没有问题。 我试图将应用程序部署到heroku完全按照本走查中描述的步骤:https://devcenter.heroku.com/articles/deploying-spring-boot-apps-to-heroku 注意:演练没有提到Procfile,所以我没有创建Procfile。 当在浏览

  • 我有一个MVC6站点,它已部署为Azure Web应用程序。我已使用服务器资源管理器在Visual Studio中启用了所有跟踪/诊断选项。我正在尝试进行远程调试,但我在浏览器上只看到一个错误500,没有找到任何关于错误发生的确切位置的信息(或触发错误断点)。 在从Azure获取的文件日志中找不到任何错误跟踪。 我应该如何解决Azure Web应用程序中的错误500? 将“CustomErrors

  • 我只是在尝试我的第一个struts2应用程序。遵循教程中的步骤。链接 和链接 两者都给出相同的“资源不可用”错误。我已经添加了错误、目录结构和struts所需的图像。xml,网络。xml和tutorialaction类。此外,还可以在目录结构中看到添加的JAR(apache的最新版本)。谁能帮我解决这个问题? 我的IDE:日食开普勒 服务器:Apache Tomcat 7.0