Micronaut 2.0.0“超过1条路由与传入请求匹配”

时间:2020-06-21 13:27:00

标签: java rest maven controller micronaut

我是micronaut框架的新手,我正在尝试使一个简单的Web应用程序正常工作。该应用程序具有一个Controller“ TestController”,带有两个GET端点;一个带有参数,一个没有参数:

@Controller("/api/tests")
public class TestController

    @Get
    public HttpResponse<String> getAll()

    @Get("/{id}")
    public HttpResponse<String> getUserProfile(@NotBlank @PathVariable("id") long id)

这只是类和方法的签名

我已经使用Micronaut Launch网站(https://micronaut.io/launch/)选择了maven和JDK 1.8生成了初始应用程序代码。

我使用“ mvn clean compile exec:exec”或“ mvn mn:run”编译并运行应用。

当我尝试不使用任何参数调用端点时:“ GET http:// localhost:8080 / api / tests”
我得到:“ 有1条以上的路由与传入请求匹配。以下路由与/ api / tests匹配:GET-/ api / tests,GET-/ api / tests

当我尝试使用参数调用端点时:GET http:// localhost:8080 / api / tests / 1
我得到:“ 找不到页面

我正在Windows 10上运行,使用的是Eclipse版本:2019-12(4.14.0)和JDK版本1.8.0_121-b13。

我对POM进行了修改,以包括各种微纳处理器。我已经在Eclipse中安装了m2e,并选择了“自动配置JDT APT”进行注释处理。

我将非常感谢您为运行此简单应用程序提供的帮助。我已将源代码上传到https://github.com/phillwatson/upstart-failures

上的Git Hub

1 个答案:

答案 0 :(得分:0)

@JeffScottBrown感谢您抽出宝贵的时间对此进行研究。非常感谢。您的示例使我找到了解决方案,尽管不像使用2.0.0.RC2那样简单。

问题的原因是我包含了micronauts.jaxrs库。比较您的pom,您没有。我猜想jaxrs批注处理引起了与micronaut http批注的混淆。无论是什么根本原因,删除对jaxrs的引用都可以解决此问题。

再次感谢。