JAXBContext.createUnmarshaller().unmarshal 得到的属性 都为空的问题解决

  • 【问题描述】

jdk从1.8.0_044 升级到 1.8.0_120
原先通过JAXBContext.createUnmarshaller().unmarshal 解析xml ,还原成的object 正常,
升级jdk后,还原的object本身不为null,但是属性都为null。
以上问题都出现在单元测试阶段。
运行阶段jdk版本为1.8.0_144 也没有出现这个问题(具体怎么回事没有时间验证)。
网上多数文章说是jdk1.8.0—100之后 JAXBContext.createUnmarshaller() 对xml内容格式要求严格了,导致原先不严格的xml还原不了object,但是我的java model都是通过xjc命令+xsd文件生成的,xml内容也是严格按照要求编写的,不存在格式不对的问题。

  • 【解决方法】

最终解决问题的方法是在pom中添加以下依赖:
org.glassfish.jaxb/jaxb-runtime/2.2.11

【相关资料】

https://docs.oracle.com/javase/8/docs/api/javax/xml/bind/Unmarshaller.html
https://stackoverflow.com/questions/41850384/jaxb-doesnt-unmarshall-after-updating-java-from-1-8-0-77-to-1-8-0-121

https://stackoverflow.com/questions/26413431/which-artifacts-should-i-use-for-jaxb-ri-in-my-maven-project?noredirect=1&lq=1

https://www.ibm.com/support/knowledgecenter/en/SSEQTP_8.5.5/com.ibm.websphere.base.doc/ae/twbs_jaxbmarshalxml.html

https://stackoverflow.com/questions/53177129/incompatible-jaxb-dependencies

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值