Arch Linux下启动Weka 3.8.6 GUI遇InvocationTargetException错误求解决
解决Arch Linux上Weka 3.8.6启动GUI的错误
核心问题
Weka 3.8.6为旧版本,与Arch Linux默认的JDK 17+存在多处兼容性冲突:
- JDK 17已彻底移除废弃的Security Manager,Weka 3.8.6仍调用相关API
- JDK 9引入的模块系统限制反射访问,导致类加载权限报错
- 缺少mtj(Matrix Toolkit Java)依赖库,触发
ClassNotFoundException
解决方法
方法1:使用兼容的JDK 8(推荐)
Weka 3.8.6原生适配JDK 8,操作步骤:
- 安装JDK 8:
sudo pacman -S jdk8-openjdk - 切换到JDK 8启动Weka:
archlinux-java set java-8-openjdk java -jar weka.jar - 启动完成后可切回默认JDK:
archlinux-java set java-17-openjdk # 替换为你的默认JDK版本
方法2:修复依赖并添加JVM参数(适配新版JDK)
- 安装缺失的mtj依赖:
sudo pacman -S mtj - 用完整JVM参数启动Weka:
参数说明:java --add-opens java.base/java.lang=ALL-UNNAMED \ --add-opens java.base/java.lang.reflect=ALL-UNNAMED \ --add-opens java.base/java.security=ALL-UNNAMED \ -Djava.security.manager=allow \ -jar weka.jar--add-opens:解除JDK模块系统对反射访问的限制-Djava.security.manager=allow:禁用安全管理器(JDK 17允许的临时兼容方式)
方法3:升级Weka到最新稳定版
Weka 3.9.x及以上版本已适配新版JDK,可直接安装最新版规避兼容性问题:
# 通过AUR安装(需提前配置AUR助手) yay -S weka
内容的提问来源于stack exchange,提问作者user28470398
相关产品推荐
相关产品推荐

