首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IllegalAnnotationExceptions的3个计数

IllegalAnnotationExceptions的3个计数
EN

Stack Overflow用户
提问于 2010-07-21 01:08:37
回答 2查看 17.5K关注 0票数 5

我以前从未使用过JAXB。我正在做一个测试工具项目。我有大约20个不同的测试用例。当我运行我的测试时,我得到这个错误。

我的结构如下:

A是TestCase的基类。

B扩展了A

C扩展了B

基类A:

代码语言:javascript
复制
public class A {
  public A(String t){
     testName = t;
  }

  private String aData;
  private String testName;
  public void setAData(String a){
     aData = a;
  }

  public void getAData(){
     return aData;
  }

  public void setTestName(String t){
     testName = t;
  }

  public void getTestName(){
     return testName;
  }
}

B类:

代码语言:javascript
复制
public class B extends A{ 
   public B(String testName){
      super(testName);
   }

   private String bData;
   public void setBData(String b){
      bData = b.trim();
   }
   public String getData(){
      return bData;
   }       
}

C类:

代码语言:javascript
复制
@XmlRootElement(name="C")
public class C extends B{
    public C(String testName){
        super(testName);
    }

    private String cData;
    public void setCData(String c){
        cData = c;
    }
    public String getCData(){
        return cData;
    }
}

用于解组我编写的xml文件

代码语言:javascript
复制
public C unmarshall(C test, String dir){
    try {
        JAXBContext jc = JAXBContext.newInstance(c.getClass);
        Unmarshaller u = jc.createUnmarshaller();

        test = (C)u.unmarshal(new FileInputStream(dir));
    } catch (Exception e) {
        System.out.println(e.getMessage());
    }

    return test;
 }

我的xml文件如下所示:

代码语言:javascript
复制
<C>
   <aData> aaaa </aData>
   <bData> bbbb </bData>
   <cData> cccc </cData>
</C>

当我运行我的代码时,我得到了3次IllegalAnnotationException计数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-21 01:19:18

IllegalAnnotationExceptions是由于您在A、B和C上没有默认的零参数构造函数造成的。

添加到A:

代码语言:javascript
复制
public A() {
}

添加到B:

代码语言:javascript
复制
public B() {
}

并添加到C:

代码语言:javascript
复制
public C() {
}
票数 13
EN

Stack Overflow用户

发布于 2018-06-13 19:09:32

这是因为您正在创建JAXBcontext实例的那个类的子元素与其中定义的元素名称不同。

示例:

代码语言:javascript
复制
@XmlType(name = "xyz", propOrder =
{ "a", "b", "c", "d" })
@XmlRootElement(name = "testClass")
public class TestClass
{

  @XmlElement(required = true)
  protected Status status;
  @XmlElement(required = true)
  protected String mno;
  @XmlElement(required = true)

}

在上面的类中,您没有"xyz“,但是如果您将放入不可用的属性名称,JAXBContext实例化将抛出IlligalAnnotationException。

这样你就有3个地方名字不匹配了。所以三次使用IllegalAnnotationExceptions。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3292483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档