当碰到现有端点时,曾经以多模块形式覆盖的Quarkus项目得到404

时间:2019-12-13 19:34:17

标签: quarkus

quarkus.version :1.0.1。最终版本

曾经有一个工作正常的quarkus网络项目,具有轻松的端点。

将其转换为多模块之一。

仍然使用maven

这种方式:

 my-project-service
   - my-project-api
     - data-api-object.java
     - pom.xml // dep on `quarkus-core` as `provided`
   - my-project-backend
     - pom.xml  + depends on my-project-api
   - pom.xml // managed dependencies defined

实际上类似于this example

全部编译并运行。

./mvnw compile quarkus:dev

我看到日志:

- [io.quarkus] (main) Quarkus 1.0.1.Final started in 1.595s. Listening on: http://0.0.0.0:8080
- [io.quarkus] (main) Installed features: [agroal, cdi, infinispan-client, jaeger, narayana-jta, reactive-pg-client, rest-client, resteasy, resteasy-jackson, smallrye-context-propagation, smallrye-fault-tolerance, smallrye-health, smallrye-metrics, smallrye-openapi, smallrye-opentracing, swagger-ui, vertx]

但是当我击中一次工作端点时:

http://localhost:8080/my-project-service/stuff

我得到了:404

如果我检查自己的健康检查网址: http://localhost:8080/my-project-service/health/ready

在my-project-backend中/ ... / resources / application.properties

quarkus.application.name=my-project-service
quarkus.http.root-path=/my-project-service

所以我实际上必须打电话给http://localhost:8080/my-project-service/。尚未更改。

我想,呼叫从未到达应用程序。

问:可能是什么问题?

更新:

运行时我得到了空指针。

仅供参考:/ src / main / etc文件夹可能为空-父pom项目(pom)中没有源。

Listening for transport dt_socket at address: 5005
Exception in thread "main" java.lang.RuntimeException: java.lang.NullPointerException
        at io.quarkus.dev.DevModeMain.main(DevModeMain.java:70)
Caused by: java.lang.NullPointerException
        at sun.nio.fs.UnixPath.normalizeAndCheck(UnixPath.java:77)

我确实清理了/ target文件夹等...没有帮助。

我可以到达http://localhost:8080/swagger-ui/-它可以正常工作,但还是空着。 http://localhost:8080/my-project-service/swagger-ui/工作完成后也会得到404。

(可能与此fix相关)

我试图将resources / application.properties(不确定应该在哪里)移动到我的根项目中。没有效果。

P.S。  我也将所有(也)转换为Gralde。同样的问题。

更新2:

  • 切换到最新版本(现在为1.1.0.CR1)
  • 现在我看到了一些新的例外: -Failed to start Quarkus: java.lang.IllegalArgumentException: Multiple matching properties for name "datasource.url"-即使每个环境只有一个,但对于开发人员来说只有一个:%dev.quarkus.datasource.url

    我想这只是一个新错误。回滚我过去的地方。

UPDATE3:  如果我编译本机,则应用程序将在其余请求上工作/反应。似乎仅与开发有关(并且可能与热重装有关)。

2 个答案:

答案 0 :(得分:0)

到目前为止,(基于git thread)使其有效:

  1. 从父文件夹中:
  

./ mvnw全新安装-DskipTests

,因此它将解析/注册所有部门/工件

  1. 然后从一个负责运行该应用程序的后端(后端)编译/运行它。
  

cd my-project-backend

     

mvn编译quarkus:dev

,我的项目后端应包含<build>..<plugin> <artifactId>quarkus-maven-plugin</artifactId>而不是父项。


关于版本:要使用1.1.0.CR 1+,  确保我们没有同时拥有以下两个部门:quarkus-agroalquarkus-reactive-pg-client依赖项。

这两个原因都定义了quarkus.datasource.url。..我只留下了quarkus-reactive-pg-client


不确定是否应该这样。还是最终由父母代办。待定。

原生seems does not work。待定。

答案 1 :(得分:0)

尝试时遇到了这个问题:https://github.com/quarkusio/quarkus/issues/6275

您是否也用最新的Quarkus版本遇到了这个问题?