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

Java Weka调用CSVSaver转换arff为csv时报InaccessibleObjectException怎么办

问题原因

该异常由Java 9及以上版本引入的Java平台模块化系统(JPMS)的权限限制导致。你所使用的Weka版本内部依赖反射机制调用ClassLoader的defineClass方法完成类注入逻辑,而Java 9之后默认禁止未授权代码反射访问java.lang包下的核心类方法,因此触发了InaccessibleObjectException。
你贴出的代码逻辑本身没有错误,无需调整代码内容,仅需要做环境适配即可解决问题。

解决方案
  • 方案1:降级JDK版本
    最简单的适配方案是将本地开发环境的JDK版本降级到1.8(Java 8),该版本没有模块化权限限制,Weka所有常规功能都可以正常运行,不需要额外配置。
  • 方案2:添加JVM启动参数(不降级Java版本)
    如果你必须使用Java 9及以上版本,可以在运行程序时添加JVM启动参数,主动开放java.lang包的访问权限给未命名模块:
    --add-opens java.base/java.lang=ALL-UNNAMED
    
    如果你使用IDEA、Eclipse等IDE运行代码,找到对应运行配置的「VM options」输入框,将上述参数粘贴进去即可生效。
  • 方案3:升级Weka版本
    Weka官方在3.9.6及以上的稳定版本中已经修复了高版本Java的兼容问题,你可以将项目依赖的Weka包升级到对应版本,也可以解决该反射权限异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:18:02