微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Unmarshaller 在简单的 XML 字符串解析时抛出 IllegalAccessError

如何解决Unmarshaller 在简单的 XML 字符串解析时抛出 IllegalAccessError

我想使用 javax.xml.bind.Unmarshaller一个简单的 xml 字符串反序列化为一个在开放自由中运行的 Java EE 应用程序中的对象。我有以下反序列化方法

反序列化

package com.my.deserializer;

public class XmlDeserializer {
    private static Name deserialize() {
        try {
            JAXBContext jaxbContext = JAXBContext.newInstance(Name.class);
            Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();           

            StringReader reader = new StringReader("<Name xml:lang=\"en\">Acme,Inc.</Name>");
            Name cXml = (Name) unmarshaller.unmarshal(reader);
            return cXml;
        } catch (JAXBException e) {
            e1.printstacktrace();
        }
        return null;
    }
}

package com.my.model;

@XmlRootElement(name = "Name")
public class Name implements Serializable {
    private static final long serialVersionUID = -4018453444627994825L;

    @XmlAttribute(name = "lang",namespace = "xml")
    public String lang;
    
    @XmlValue
    public String text;
}

当我调用 XmlDeserializer.deserialize() 时,出现以下异常:

java.lang.IllegalAccessError: tried to access class com.my.model.Name from class com.my.deserializer.XmlDeserializer

只有将类名从 Name 更改为任何其他名称,例如,我才能使此代码正常工作。 Name_Entity。我的代码有问题吗?

系统规格

  • Windows 10 x64
  • Eclipse 2020-06
  • Java SE-1.8
  • Maven 依赖:
<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.1</version>
</dependency>

OpenLiberty (v. 20.0.0.9)

特点:

<feature>webProfile-8.0</feature>
<feature>mpJwt-1.1</feature>
<feature>localConnector-1.0</feature>
<feature>mpHealth-2.2</feature>
<feature>jaxws-2.2</feature>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。