关于 Vert.x 与 Netty 的版本问题
Vert.x 项目启动的时候出现严重警告
初始化一个 Maven 项目,在 Pom 文件中引入 Vert.x 依赖。
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-core</artifactId>
<version>4.5.7</version>
</dependency>
引入依赖之后,编写一个 Hello World 代码。
public class VertxHttpServer {
public static void main(String[] args) {
Vertx vertx = Vertx.vertx();
HttpServer httpServer = vertx.createHttpServer();
httpServer.requestHandler(request -> {
HttpServerResponse response = request.response();
response.end("hello world");
});
httpServer.listen(8123, result -> {
if (result.succeeded()) {
System.out.println("Vert Http Server Start!");
}else {
System.out.println("Vert Http Server Failed: " + result.cause());
}
});
}
}
直接执行 main 方法,启动项目后发现控制台输出了一条严重警告。
(本人使用的是 MacOS 系统,并且我在 Windows 系统上没有出现这个警告。)
其实这个警告目前来看也不影响使用,只是警告级别不是错误。但是介于本人是个强迫症^ - ^,于是百度查了一下,得到的解决方案是在 pom 文件中添加 netty 的依赖。
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-resolver-dns-native-macos</artifactId>
<version>4.1.108.Final</version>
</dependency>
如果引入了这个依赖之后依旧有警告,则把上面这个依赖替换成下面这个。当然,你也可以直接一步到位,直接引入下面这个依赖。
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.108.Final</version>
</dependency>
Vert.x 与 netty 的版本对应问题
如上文所示,为解决那条警告就要引入 netty 相关依赖。但是,引入依赖的时候我们需要选择版本,就在我选择版本的时候引发了一个问题,因为我当时引入的不是上文的 4.1.108.Final 版本,而是 4.1.90.Final 版本。
这个时候再启动,已经没有了那条严重警告内容。
而当这个时候向这个端口号发请求的时候就出现问题了,不管是直接网页请求还是使用 ApiPost 请求都是请求失败。
所以当在引入了 Vert.x 依赖之后如果想要再次引入 netty 依赖,则需要注意下版本信息。因为 Vert.x 本身就是使用 netty 开发的,本身就自带有 netty 的依赖。当我们自己再引入依赖的时候,如果版本不一样可能会出现问题。可以在 Maven 的依赖关系中查看 Vert.x 包下的 netty 版本,然后将我们自己引入的 netty 版本与其保持一致即可。
修改版本之后再次测试!!!
再次发送请求,得到了 Hello World 的返回内容~
完结~