Sam*_*ami 5 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;
}
}
Run Code Online (Sandbox Code Playgroud)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
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;
}
}
Run Code Online (Sandbox Code Playgroud)
并为我编写的解组我的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;
}
Run Code Online (Sandbox Code Playgroud)
我的xml文件如下:
<C>
<aData> aaaa </aData>
<bData> bbbb </bData>
<cData> cccc </cData>
</C>
Run Code Online (Sandbox Code Playgroud)
当我运行我的代码时,我得到3个IllegalAnnotationException计数.
bdo*_*han 12
IllegalAnnotationExceptions是由于您在A,B和C上没有默认的零arg构造函数.
添加到A:
public A() {
}
Run Code Online (Sandbox Code Playgroud)
加至B:
public B() {
}
Run Code Online (Sandbox Code Playgroud)
并添加到C:
public C() {
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14735 次 |
| 最近记录: |