Ich habe noch nie zuvor JAXB verwendet. Ich arbeite an einem Testgeschirrprojekt. Ich habe ungefähr 20 verschiedene Testfälle. Wenn ich meinen Test ausführe, erhalte ich diesen Fehler.3 Zählungen von IllegalAnnotationExceptions
Meine Struktur ist wie:
A
die Klasse Basis Testcase ist.
B
erweitert A
.
C
erweitert B
.
Basisklasse 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;
}
}
Klasse 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;
}
}
Klasse 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;
}
}
und für unmarshalling meine XML-Dateien i schrieb
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;
}
meine XML-Datei wie folgt aussieht:
<C>
<aData> aaaa </aData>
<bData> bbbb </bData>
<cData> cccc </cData>
</C>
, wenn ich meinen Code ausführen i 3 zählt von IllegalAnnotationException erhalten.
Warum ein ze hinzufügen Ro-Args-Konstruktor? – om39a
So weit ich verstehe, wird der Standardkonstruktor null arg benötigt, da die Art und Weise, wie Serilisierung/Deserialisierung funktioniert, die erste Instanz mit dem Standardkonstruktor erstellt wird und dann die Werte mittels Reflektion injiziert werden. Sie benötigen also einen Standardkonstruktor. –