JAXB маршал / демаршалинг SWT.Image или AWT BufferedImage - PullRequest
1 голос
/ 01 февраля 2012

Я пытаюсь маршалировать с помощью jaxb объект, который содержит изображение, а затем демаршировать его (т. Е. Сохранять / загружать).

Есть ли способ сохранить это изображение?

Iя пытаюсь создать функцию, которая возвращает байтовый массив, описывающий образы swt.image, но как только я пометил его как @XmlElement, процесс его сохранения завершается с ошибкой, например:

com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
JAXB annotation is placed on a method that is not a JAXB property
    this problem is related to the following location:
        at @javax.xml.bind.annotation.XmlElement()

ТакжеЯ протестировал преобразование SWT.Image в AWT.BufferedImage, но все равно получаю то же исключение.

1 Ответ

2 голосов
/ 01 февраля 2012

Исключение означает, что вы поместили аннотацию в метод, который не является средством доступа (метод get / set).Ниже приведен пример использования свойства java.awt.Image:

Root

package forum9094655;

import java.awt.Image;

import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement
public class Root {

    private Image image;

    public Image getImage() {
        return image;
    }

    public void setImage(Image image) {
        this.image = image;
    }

}

Демо

package forum9094655;

import java.awt.Image;
import java.awt.image.BufferedImage;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(Root.class);

        Root root = new Root();
        Image image = new BufferedImage(1,1,BufferedImage.TYPE_INT_RGB);
        root.setImage(image);

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(root, System.out);
    }

}

Выход

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root>
    <image>iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVR42mNgYGAAAAAEAAHI6uv5AAAAAElFTkSuQmCC</image>
</root>
...