java - 3 项 IllegalAnnotationExceptions

标签 java jaxb unmarshalling

我以前从未使用过 JAXB。我正在研究一个测试工具项目。我有大约 20 个不同的测试用例。当我运行测试时,出现此错误。

我的结构是这样的:

A 是基本的 TestCase 类。

B 扩展 A

C 扩展 B

基类 A:

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 类:

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 类:

@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 文件

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 文件如下所示:

<C>
   <aData> aaaa </aData>
   <bData> bbbb </bData>
   <cData> cccc </cData>
</C>

当我运行我的代码时,我得到 3 个 IllegalAnnotationException。

最佳答案

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

添加到 A:

public A() {
}

添加到 B:

public B() {
}

并添加到 C:

public C() {
}

关于java - 3 项 IllegalAnnotationExceptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3292483/

相关文章:

c# - 全局内存访问

Java jaxb从xml解码到java对象返回空值

java - 默认情况下防止 JAXB 解码器转义特殊字符

java - 将 xml 输入流式传输到 sax 解析器,如何打印流式传输的 xml?

java - 是否可以使用 jaxb 在此 xml 中进行继承?

xml - xjc 生成的重复嵌套类

jaxb - OpenJDK JAXB 实现中奇怪的 NullPointerException 捕获

java - 为什么我们需要动态绑定(bind)(Java)?

java - 池化 Box2d 实体?

java - IO 错误 : Got minus one from a read call