惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
月光博客
月光博客
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队
Stack Overflow Blog
Stack Overflow Blog
Engineering at Meta
Engineering at Meta
T
The Blog of Author Tim Ferriss
The GitHub Blog
The GitHub Blog
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
IT之家
IT之家
宝玉的分享
宝玉的分享
A
About on SuperTechFans
Vercel News
Vercel News
P
Proofpoint News Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 【当耐特】
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
V
Visual Studio Blog
Jina AI
Jina AI
Y
Y Combinator Blog
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI

博客园 - 锐洋智能

A股怎么算的量比? CIDR 从最大网段 `0.0.0.0/0` → 最小单个 IP `/32`完整梳理 CIDR 无类别域间路由写法 Java 实现A股前复权/后复权计算原理 windows 下 降级迁移 Redis 8.8.0(源) → Redis 8.6.3(目标) Eclipse IDE for Enterprise Find/Replace 窗口可以"停驻" 安装 SDelete 方式 SDelete 的核心作用,不是 “删文件”,而是 “把你已经删掉的文件,彻底从磁盘上抹干净”,同时帮你把虚拟机里的 “空闲空间” 变成连续的、可被回收的状态。 windows 10 启动就运行了一个批处理文件 在什么地方修改?启动项中? 让 Spring Framework7.0.7 支持 velocity Spring 5.x + 老项目的 JWT 拦截器 + 自动续期 接口鉴权:Session/Cookie 与 JWT 的核心区别 下是针对 RedisSessionManager 的 Tomcat context.xml 配置示例,覆盖基础单机 Redis、带密码 / 指定库、Redis 哨兵集群、自定义序列化 / 持久化策略 等常见场景 Redis-8.6.3-Windows-x64-cygwin 与 Redis-8.6.3-Windows-x64-msys2 有什么不一样? commons-fileupload2 M4 升级 M5 报错解决方案 阿里云的网络安全策略 ip 地址详细说明 Paralithic、 QLExpress、AviatorScript、exp4j 性能对比一下 java 序列化影响(重要!) paralithic 与 Aviator 表达式那一个更快 券商接受委托的完整时间线 jQuery 4.0 移除了许多已废弃的方法和特性 xheditor插件无限递归错误解决方法 jedis-7.1.0.jar 升级至 jedis-7.2.0.jar 就提示:The type JedisPoolConfig is deprecated The type JedisPooled is deprecated Spring 从 5.x 到 6.x 和 7.x 区别 js 原生 剪切板 复制功能 安装 Microsoft Visual C++ 运行时 Java与Python进程通信优化方案 Autocomplete | jQuery UI 同一面页定义不同的 .ui-autocomplete Quartz的misfire处理策略设置不当导致Job在应用启动时立即执行。 mysql-connector-j-9.5.0.jar BUG
Java 9+ 开启了模块化安全限制,不允许 Ignite 直接访问底层...
锐洋智能 · 2026-05-28 · via 博客园 - 锐洋智能

Java 高版本(Java 9+)与 Apache Ignite 旧版本不兼容 导致的模块访问权限报错

java.lang.reflect.InaccessibleObjectException:
Unable to make field long java.nio.Buffer.address accessible:
module java.base does not "opens java.nio" to unnamed module

翻译:

Java 9+ 开启了模块化安全限制,不允许 Ignite 直接访问底层内存地址,导致 Ignite 启动失败。


二、为什么会出现?

  1. 你用的 JDK 版本 >= 9(Java 11、17 最常见)
  2. Apache Ignite 版本比较旧(2.8 及以下)
  3. 旧版 Ignite 使用了 Java 高版本不允许的底层内存反射访问
  4. 所以 JVM 直接拒绝,抛出异常

三、最简单、100% 能解决的方案

给 Java 启动加一行 JVM 参数,开放权限即可。

你只需要添加这 2 个参数:

--add-opens java.base/java.nio=ALL-UNNAMED
--add-opens java.base/sun.nio.ch=ALL-UNNAMED

完整示例(启动命令)

java
--add-opens java.base/java.nio=ALL-UNNAMED
--add-opens java.base/sun.nio.ch=ALL-UNNAMED
-jar your-app.jar

如果是 IDEA / 开发环境

Run/Debug Configurations → VM options

粘贴:

--add-opens java.base/java.nio=ALL-UNNAMED --add-opens java.base/sun.nio.ch=ALL-UNNAMED

四、如果不想加参数(备选方案)

  1. 降级 JDK 到 Java 8(最稳,旧版 Ignite 原生支持)
  2. 升级 Ignite 到 2.10+ / 2.15+(高版本已修复兼容问题)

五、你的业务日志说明

posted @ 2026-05-28 06:45  锐洋智能  阅读(4)  评论()    收藏  举报