使用 graalvm 构建顶点

vertx build with graalvm

我休假 https://github.com/vertx-howtos/graal-native-image-howto/blob/20.3.0/README.adoc 并设法用 graalvm 构建我的 vertx 项目,但是当我启动本机图像 vertx 时没有启动。我看不到 vertx 日志,“正在侦听...”

你可以看到我的full pom here

和java代码here

向应用程序添加一些错误处理将显示第一个问题与图像中缺少文件 application.properties 有关,这可以通过更新 native-image.properties 配置来解决:

-H:IncludeResources=.*\.properties

然后应用程序将启动,但再次无法 return 数据。这是因为应用程序正在使用 jackson 数据绑定(依赖于反射)将 POJO 编码为 JSON.

修复它需要了解 jackson 反射的工作原理并编写正确的配置,或者保持简单并使用 Vert.x 内置 JSON 类型,例如:

        req.response()
         .putHeader("content-type", "application/json")
         .end(new JsonObject()
           .put("name", "vertx")
           .put("releaseYear", LocalDate.now().getYear())
           .encode());