Java XML - «1 счетчик исключений IllegalAnnotationException» - PullRequest
0 голосов
/ 21 сентября 2019

Я запускаю этот код в своем Java-приложении, и в первой строке выдается исключение IllegalAnnotationExceptions :

JAXBContext jaxbContext = JAXBContext.newInstance(Product.class);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
// output pretty printed
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);                         
jaxbMarshaller.marshal(productFound, serverOutput);

Я не знаком с форматом XML.Итак, из того, что я видел в Интернете, проблема связана с классом Product, который означает этот файл:

package service;

import javax.xml.bind.annotation.*;

@XmlRootElement(name = "Product")
@XmlAccessorType(XmlAccessType.FIELD)


public class Product {

    @XmlElement(name = "id")
    private String id;
    @XmlElement(name = "name")
    private String name;
    @XmlElement(name = "price")
    private String price;


    public Product(String id, String name, String price) {
        super();
        this.id = id;
        this.name = name;
        this.price = price;
    }


    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }

}

Особенно в отношении аннотаций.Я сделал что-то не так ?Или что-то выглядит странно в моем коде?

Спасибо!

Ответы [ 2 ]

1 голос
/ 21 сентября 2019

Ваш класс Product должен иметь конструктор без аргументов.Для классов Java без конструктора компилятор Java синтезирует класс без аргументов.Как только вы явно добавляете конструктор, компилятор не добавляет конструктор по умолчанию без аргументов, поэтому здесь вы также должны добавить явный конструктор без аргументов для использования реализацией JAXB.

1 голос
/ 21 сентября 2019

В зависимости от используемой вами реализации JAXB, вам может понадобиться добавить конструктор без аргументов в ваш класс Product, например:

public Product() {}

См. Этот вопрос для дальнейшей информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...