Micronaut 控制器错误页面未找到

Posted

技术标签:

【中文标题】Micronaut 控制器错误页面未找到【英文标题】:Micronaut controller error Page Not Found 【发布时间】:2019-04-22 03:36:18 【问题描述】:

我创建了一个新的 micronaut 应用程序,使用 mn create-app example.micronaut.complete

之后,我使用 intellij 打开了项目,并在项目中添加了一个新类作为 TestController,代码如下:

package example.micronaut;
import io.micronaut.http.MediaType;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;


@Controller("/hello")
public class TestController 

TestController()

@Get(value = "/", produces = MediaType.TEXT_PLAIN)
String getTest()
    return "some string";
   

但我得到了

"_links":"self":"href":"/","templated":false,"message":"Page Not Found"

每当我尝试访问 /hello 端点时

我的 application.yml 看起来像这样:

micronaut:
    application:
        name: complete
    server:
        port: 8080

【问题讨论】:

【参考方案1】:

如果没有看到更多您的项目,很难说出哪里出了问题。我已将您的代码直接粘贴到项目中,它按预期工作。请参阅https://github.com/jeffbrown/khwaja404 上的项目。 https://github.com/jeffbrown/khwaja404/blob/a3e57623ed5b30e28eb95bfe0f4a4a5c9d123fd8/src/main/java/example/micronaut/TestController.java 的控制器工作正常...

package example.micronaut;

import io.micronaut.http.MediaType;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;


@Controller("/hello")
public class TestController 

    // this empty constructor is not
    // needed, but isn't a problem...
    TestController() 
    

    @Get(value = "/", produces = MediaType.TEXT_PLAIN)
    String getTest() 
        return "some string";
    

端点响应:

$ curl http://localhost:8080/hello
some string

要寻找的一件事是您可能缺少micronaut-inject-java 和/或micronaut-inject 依赖项,如https://github.com/jeffbrown/khwaja404/blob/a3e57623ed5b30e28eb95bfe0f4a4a5c9d123fd8/build.gradle#L27-L29 所示。

另一个是如果您从 IDE(如 IntelliJ IDEA)运行应用程序,请确保您在构建中启用了注释处理器。

【讨论】:

无法从您的代码示例中判断您使用的是 Java 还是 Groovy。我链接的示例使用 Java。如果你使用 Groovy,当然你需要 micronaut-inject-groovy 依赖。 感谢您的快速回复。我的错误是我一直忘记启用注释处理器。感谢您指出。我想知道是否有一种方法可以在 IDE 中为 micronaut 启用控制台调试日志记录,类似于 spring boot。 “我想知道是否有一种方法可以在 IDE 中为 micronaut 启用控制台调试日志记录,类似于 spring boot。”。是的你可以。见github.com/jeffbrown/khwaja404/blob/master/src/main/resources/…。 如果您不知道如何在 Eclipse 中启用编译时注释处理器,您应该将其作为单独的问题发布。 如果你签出我链接的项目并运行./gradlew run(或者gradlew run,如果你使用的是基本的Windows shell),你会看到Micronaut端点工作正常。【参考方案2】:

我挣扎了一整天才发现它是 Eclipse 中的一个错误,并且该问题已在最新版本中得到解决。请切换到版本:2020-12 (4.18.0)或以上

Issue Description

Eclipse Bug

【讨论】:

以上是关于Micronaut 控制器错误页面未找到的主要内容,如果未能解决你的问题,请参考以下文章

未找到 WindowsAnsiOutputStream 类

localhost/phpmyadmin 给出页面未找到错误

HTTP 错误 404.3 - 未找到 - 由于扩展配置,无法提供您请求的页面

字体文件在控制台上显示为未找到,并且在页面加载时未立即呈现

什么是“未找到项目”错误页面最合适的 HTTP 状态代码

django admin 自定义模板页面未找到错误