Zum Inhalt

MapStruct, JAXBElement und Java Version >9

Das Mappen von JAXBElement<String> auf ein String Attribute funktioniert mit MapStruct eigentlich out-of-the-box. Eigentlich.
Interessant wird es wenn die Java Version mit der man arbeitet >=9 ist. Dann fehlt MapStruct nämlich die jaxb-api Bibliothek im Klassenpfad. Und man erhält folgende Fehlermeldung bei erzeugen der Mapper:

Error:java: Can't map property "javax.xml.bind.JAXBElement xxxxx" to "java.lang.String xxxxx". Consider to declare/implement a mapping method: "java.lang.String map(javax.xml.bind.JAXBElement value)".

Die Lösung des Problems für Projekte auf Maven sieht dann so aus:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.1</version>
    <configuration>
        <source>${java.version}</source>
        <target>${java.version}</target>
        <annotationProcessorPaths>
            <path>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct-processor</artifactId>
                <version>${mapstruct.version}</version>
            </path>
            <path>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
                <version>2.3.1</version>
            </path>
        </annotationProcessorPaths>
    </configuration>
</plugin>
Published inUncategorized

Schreibe den ersten Kommentar

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

    Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.