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

Eclipse Maven JDK11项目XStream提示未开放包导致字段无法访问报错如何解决

问题原因

你遇到的报错是Java 9+引入的JPMS(Java平台模块系统)的访问限制导致的,和你配置的alias别名无关:
XStream默认通过反射读取类的私有字段完成序列化,你的项目启用了模块系统,没有将存放实体类的modele包开放给xstream模块的反射访问权限,因此触发了权限异常。

解决方案

你可以根据自己的项目需求任选下面一种方案处理:

方案1:禁用模块系统(操作最简单)

如果你的项目不需要用到JPMS的模块特性,直接删除项目根目录下的module-info.java文件即可。JDK 11在没有检测到模块描述文件时,会自动降级为类路径运行模式,不会存在模块访问限制,修改后重新运行代码即可正常序列化。

方案2:保留模块系统,补充开放权限

如果你需要使用模块系统的特性,修改项目的module-info.java文件,添加对应的开放权限配置:

module archi {
    // 原有依赖声明保留,新增下面的配置
    opens modele to xstream;
    // 后续如果需要序列化controlleur、vue包下的类,对应补充开放配置即可
    // opens controlleur to xstream;
    // opens vue to xstream;
}

模块问题解决后,你之前写的别名配置就可以正常生效,完整的XStream使用示例如下:

XStream xstream = new XStream();
// 配置别名
xstream.alias("ue", UE.class);
xstream.alias("classe", Classe.class);
xstream.alias("creneau", Creneau.class);
// 配置允许序列化的类,避免XStream的安全告警
xstream.allowTypes(new Class[]{UE.class, Classe.class, Creneau.class});

String xml = xstream.toXML(ue);
System.out.println(xml);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:42:04