【问题标题】:Micronaut controller error Page Not FoundMicronaut 控制器错误页面未找到
【发布时间】: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

【问题讨论】:

    标签: micronaut


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2020-01-30
      • 2015-06-22
      • 1970-01-01
      • 1970-01-01
      • 2017-10-21
      • 2013-10-04
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多