JAXB und java.nio.file.Path

Elenteria

Bekanntes Mitglied
Hallo Zusammen,

Ich habe Folgendes Problem: Ich möchte mittels JAXB verschiedene Modelklassen serialisieren bzw. deserialisieren. Darunter befindet sich allerdings eine Klasse File mit einem Attribute path vom Typ java.nio.file.Path, was zu folgendem Fehler führt:
Code:
java.nio.file.Path is an interface, and JAXB can't handle interfaces.
#

Ich hab mittlerweile rausbekommen das ich ein eigenen XmlAdapter scheiben und diesen dann mit @XmlJavaTypeAdapter in der Modelklasse bekannt machen muss. Hab ich soweit getan, den Fehler bekomm ich allerdings trotzdem. Hat einer ne Idee was ich falsch mache?

[CODE lang="java" title="path attribute in der Modelklasse"]@XmlElement(name = "path")
@XmlJavaTypeAdapter(XMLPathAdapter.class)
private Path path;[/CODE]

[CODE lang="java" title="Adapter"]public class XMLPathAdapter extends XmlAdapter<String, Object> {

@Override
public Object unmarshal(String pathString) throws Exception {
return Paths.get(pathString);
}

@Override
public String marshal(Object object) throws Exception {
if (!(object instanceof Path)) {
throw new IllegalArgumentException("object is not an instance of type java.nio.file.Path");
}
Path path = (Path) object;
return path.toString();
}
}[/CODE]

Danke schon mal im vorraus 🙂
 
Ich meinte dass es eigentlich zwei Arten gibt um eine Klasse zu serialisieren, entweder in dem man die Felder direkt anspricht, oder ueber getter/setter der Felder geht. Wenn dein Serialisierer letztere Methode verwendet, wird das Ding vermutlich die Annotation am Feld ignorieren, du muesstest also auf "Feld-Serialisierung" umstellen falls dem nicht der Fall ist.
 
Die Zugriffsmethode war tatsächlich das Problem.
Ich habe die Klasse mit
Java:
@XmlAccessorType(XmlAccessType.FIELD)
Annotiert dann lief es.

Vielen Dank 🙂
 

Zurück
Oben