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

JDK11下Wildfly11集成JavaMelody1.55.0图表加载失败求助

Java Melody在JDK11+Wildfly11环境下图表加载失败及NoSuchMethodError错误解决

问题背景

我正在维护一个以Wildfly 11为应用服务器、基于JDK 11运行的应用,使用Java Melody 1.55.0作为监控工具。打开Java Melody时图表无法加载,日志中出现如下错误:

ERROR [io.undertow.request] (default task-9) UT005023: Exception handling request to /com.adins.mss.webapp/monitoring: java.lang.NoSuchMethodError: sun.nio.ch.DirectBuffer.cleaner()Lsun/misc/Cleaner;
    at deployment.com.adins.mss.webapp-1.0.0-SNAPSHOT.war//net.bull.javamelody.RrdNioBackend.unmapFile(RrdNioBackend.java:102)
    at deployment.com.adins.mss.webapp-1.0.0-SNAPSHOT.war//net.bull.javamelody.RrdNioBackend.close(RrdNioBackend.java:167)
    at deployment.com.adins.mss.webapp-1.0.0-SNAPSHOT.war//org.jrobin.core.RrdDb.close(RrdDb.java:443)
    at deployment.com.adins.mss.webapp-1.0.0-SNAPSHOT.war//org.jrobin.core.RrdDbPool.release(RrdDbPool.java:196)

错误含义

这个错误是JDK版本兼容性问题:

  • sun.nio.ch.DirectBuffer.cleaner()是JDK 8及以前的内部API,在JDK 9及以后版本中被封装为受限内部API,不再对外公开调用;
  • 你使用的Java Melody 1.55.0依赖的JRobin库仍在调用该已废弃的方法,导致运行时JVM找不到该方法,触发NoSuchMethodError,最终导致图表无法加载。

解决方法

1. 升级Java Melody版本(推荐)

Java Melody在1.70.0及以后的版本已完全修复JDK 9+的兼容性问题,移除了对sun.misc.Cleaner的依赖。直接将Java Melody升级到最新稳定版(或至少1.70.0以上),即可彻底解决该问题。

2. 添加正确的JVM参数(临时 workaround)

你之前添加的--add-opens java.base/java.lang=ALL-UNNAMED参数不匹配问题场景,需要添加允许访问NIO相关内部API的参数:

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

将这两个参数添加到Wildfly的JVM启动配置中(比如修改standalone.conf或domain.conf里的JAVA_OPTS变量),重启服务器后即可让旧版本Java Melody正常运行。

3. 切换RrdBackend实现

如果暂时无法升级Java Melody,可通过配置让Java Melody使用普通文件IO的后端实现,绕过NIO相关API调用:
在应用的web.xml中添加以下上下文参数:

<context-param>
    <param-name>javamelody.rrd-backend</param-name>
    <param-value>FILE</param-value>
</context-param>

配置完成后重启应用,Java Melody将使用非NIO的文件后端生成图表,避免触发该错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 09:12:51