You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows+IntelliJ环境下实例化Vertx对象失败并出现Netty警告

解决Windows下IntelliJ开发Vert.x应用时的Netty反射警告问题

嘿,我之前在Windows用IntelliJ开发Vert.x应用的时候也碰到过一模一样的Netty反射警告!你用Vertx.vertx()实例化对象时弹出的那个“Illegal reflective access”警告,本质是因为你的Netty版本(4.1.19.Final)偏旧,和当前使用的Java版本(大概率是Java 9+)的模块系统不兼容导致的——Java 9之后JDK加强了反射访问的限制,而老版本Netty还在使用一些不符合新规则的反射操作。

下面给你几个实用的解决办法:

  • 升级Netty/Vert.x版本(最推荐):这是从根源解决问题的方案。Vert.x本身依赖Netty,你可以直接把Vert.x升级到4.x系列的稳定版,它会自带适配Java 9+的高版本Netty(通常是4.1.70及以上)。如果暂时不想动Vert.x版本,也可以在依赖管理文件里强制指定更高版本的Netty:
    Maven配置示例:

    <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-common</artifactId>
        <version>4.1.87.Final</version>
    </dependency>
    <dependency>
        <groupId>io.netty</groupId>
        <artifactId>netty-transport</artifactId>
        <version>4.1.87.Final</version>
    </dependency>
    

    Gradle配置示例:

    implementation('io.netty:netty-common:4.1.87.Final') {
        force = true
    }
    implementation('io.netty:netty-transport:4.1.87.Final') {
        force = true
    }
    
  • 添加JVM启动参数屏蔽警告:如果暂时没法升级版本,也可以通过IntelliJ的运行配置添加参数来抑制这个警告:

    1. 打开Run/Debug Configurations面板
    2. 找到你的Vert.x应用对应的运行配置
    3. 在「VM options」输入框中添加:
      --add-opens java.base/jdk.internal.misc=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED
      

    这个参数是授权Netty相关包访问JDK内部的特定模块,从而绕过反射访问限制的检查。

  • 调整Java版本适配:如果你的Vert.x是3.x系列,它对Java 9+的支持有限,这种情况下要么把Java版本降级到8,要么升级Vert.x到4.x版本——后者对Java 11+的支持更完善,能避免不少这类兼容性问题。

补充一句:这个警告本身一般不会影响应用的正常运行,但长期使用旧版本依赖可能存在潜在的稳定性问题,所以优先推荐升级版本的方案。

内容的提问来源于stack exchange,提问作者souki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:29:45