JAXB IllegalAnnotationExceptions

Ich arbeite zum ersten Mal mit JAXB und habe einige Probleme damit, zu verstehen, was ich tun soll.

Ich habe eine Klasse eingerichtet, die Teil eines ziemlich großen XML-Dokuments ist. Diese Klasse repräsentiert den Abschnitt "Header" des XML-Dokuments.

package com.somecompany.jscentral.xml.integrator.soc;

import javax.xml.bind.JAXBException;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

import com.somecompany.jscentral.xml.AbstractXML;

@XmlRootElement(name = "Header")
@XmlAccessorType(XmlAccessType.NONE)
@XmlType(propOrder = {"OrderRoutine", "CreationDate", "CreationTime", "UserId", "CustomerNumber", 
                        "OrderType", "Salesman", "Handler", "Warehouse", "PrimaryCurrency", "OrderNumber", 
                        "Name", "OrderDate", "DeliveryAddressNumber", "ConfirmationAddressNumber", "FullName999", 
                        "CompanyName999", "StreetAddress999Line1", "StreetAddress999Line2", "City999", "StateProvince999", 
                        "PostCode999", "Country999", "Resale999", "InvoiceCustomerNumber", "CustomerReference", 
                        "NumberOfInvoiceCopies", "Language", "VAT", "Backlog", "OrderDiscountPercent", "DiscountGroup", 
                        "PriceCode", "StandardTextNumber", "HoldOrder", "TermsOfPayment", "CreditDays", "TermsOfDelivery", 
                        "MannerOfTransport", "FreightFee", "PostageFee", "InsuranceFee", "AdministrationFee", "InvoiceFee", 
                        "CustomersOrderNumberReference", "GoodsMarking", "HoldInvoice", "DeliveryAddressEngineer", 
                        "DeliveryAddressLocation", "CountryDispatchedToArrivedFrom", "VATRegNumberOfDebtorAddr", 
                        "NatureOfTransaction", "VATHandlingCode", "PortOfArrivalDispatch", "CountryOfTrader", "InternalOrder", 
                        "ToWarehouse", "RouteId", "DepartureId", "DestinationId", "ShippingAgent", "ContactListCode", 
                        "Salesman2", "CreationDate2", "Sequence", "DebtorNumber", "DebtorAddressNumber", "InvoiceAddressNumber", 
                        "WebOrder", "Confirmed", "ClientIdentity"})
public class Header extends AbstractXML {

    public Header() throws JAXBException {

        super();

    }

    @XmlElement(name = "OrderRoutine", required = true)
    private String orderRoutine;

    public void setOrderRoutine(String orderRoutine) {

        this.orderRoutine = orderRoutine;

    }

    public String getOrderRoutine() {

        return this.orderRoutine;

    }

    @XmlElement(name = "CreationDate", required = false)
    private String creationDate;

    public void setCreationDate(String creationDate) {

        this.creationDate = creationDate;

    }

    public String getCreationDate() {

        return this.creationDate;

    }

    @XmlElement(name = "CreationTime", required = false)
    private String creationTime;

    public void setCreationTime(String creationTime) {

        this.creationTime = creationTime;

    }

    public String getCreationTime() {

        return this.creationTime;

    }

    @XmlElement(name = "UserId", required = false)
    private String userId;

    public void setUserId(String userId) {

        this.userId = userId;

    }

    public String getUserId() {

        return this.userId;

    }

    @XmlElement(name = "CustomerNumber", required = true)
    private String customerNumber;

    public void setCustomerNumber(String customerNumber) {

        this.customerNumber = customerNumber;

    }

    public String getCustomerNumber() {

        return this.customerNumber;

    }

    @XmlElement(name = "OrderType", required = true)
    private String orderType;

    public void setOrderType(String orderType) {

        this.orderType = orderType;

    }

    public String getOrderType() {

        return this.orderType;

    }

    @XmlElement(name = "Salesman", required = true)
    private String salesman;

    public void setSalesman(String salesman) {

        this.salesman = salesman;

    }

    public String getSalesman() {

        return this.salesman;

    }

    @XmlElement(name = "Handler", required = true)
    private String handler;

    public void setHandler(String handler) {

        this.handler = handler;

    }

    public String getHandler() {

        return this.handler;

    }

    @XmlElement(name = "Warehouse", required = true)
    private String warehouse;

    public void setWarehouse(String warehouse) {

        this.warehouse = warehouse;

    }

    public String getWarehouse() {

        return this.warehouse;

    }

    @XmlElement(name = "PrimaryCurrency", required = true)
    private String primaryCurrency;

    public void setPrimaryCurrency(String primaryCurrency) {

        this.primaryCurrency = primaryCurrency;

    }

    public String getPrimaryCurrency() {

        return this.primaryCurrency;

    }

    @XmlElement(name = "OrderNumber", required = false)
    private String orderNumber;

    public void setOrderNumber(String orderNumber) {

        this.orderNumber = orderNumber;

    }

    public String getOrderNumber() {

        return this.orderNumber;

    }

    @XmlElement(name = "Name", required = false)
    private String name;

    public void setName(String name) {

        this.name = name;

    }

    public String getName() {

        return this.name;

    }

    @XmlElement(name = "OrderDate", required = false)
    private String orderDate;

    public void setOrderDate(String orderDate) {

        this.orderDate = orderDate;

    }

    public String getOrderDate() {

        return this.orderDate;

    }

    @XmlElement(name = "DeliveryAddressNumber", required = false)
    private String deliveryAddressNumber;

    public void setDeliveryAddressNumber(String deliveryAddressNumber) {

        this.deliveryAddressNumber = deliveryAddressNumber;

    }

    public String getDeliveryAddressNumber() {

        return this.deliveryAddressNumber;

    }

    @XmlElement(name = "ConfirmationAddressNumber", required = false)
    private String confirmationAddressNumber;

    public void setConfirmationAddressNumber(String confirmationAddressNumber) {

        this.confirmationAddressNumber = confirmationAddressNumber;

    }

    public String getConfirmationAddressNumber() {

        return this.confirmationAddressNumber;

    }

    @XmlElement(name = "FullName999", required = true)
    private String fullName999;

    public void setFullName999(String fullName999) {

        this.fullName999 = fullName999;

    }

    public String getFullName999() {

        return this.fullName999;

    }

    @XmlElement(name = "CompanyName999", required = true)
    private String companyName999;

    public void setCompanyName999(String companyName999) {

        this.companyName999 = companyName999;

    }

    public String getCompanyName999() {

        return this.companyName999;

    }

    @XmlElement(name = "StreetAddress999Line1", required = true)
    private String streetAddress999Line1;

    public void setStreetAddress999Line1(String streetAddress999Line1) {

        this.streetAddress999Line1 = streetAddress999Line1;

    }

    public String getStreetAddress999Line1() {

        return this.streetAddress999Line1;

    }

    @XmlElement(name = "StreetAddress999Line2", required = true)
    private String streetAddress999Line2;

    public void setStreetAddress999Line2(String streetAddress999Line2) {

        this.streetAddress999Line2 = streetAddress999Line2;

    }

    public String getStreetAddress999Line2() {

        return this.streetAddress999Line2;

    }

    @XmlElement(name = "City999", required = true)
    private String city999;

    public void setCity999(String city999) {

        this.city999 = city999;

    }

    public String getCity999() {

        return this.city999;

    }

    @XmlElement(name = "StateProvince999", required = true)
    private String stateProvince999;

    public void setStateProvince999(String stateProvince999) {

        this.stateProvince999 = stateProvince999;

    }

    public String getStateProvince999() {

        return this.stateProvince999;

    }

    @XmlElement(name = "PostCode999", required = true)
    private String postCode999;

    public void setPostCode999(String postCode999) {

        this.postCode999 = postCode999;

    }

    public String getPostCode999() {

        return this.postCode999;

    }

    @XmlElement(name = "Country999", required = true)
    private String country999;

    public void setCountry999(String country999) {

        this.country999 = country999;

    }

    public String getCountry999() {

        return this.country999;

    }

    @XmlElement(name = "Resale999", required = false)
    private String resale999;

    public void setResale999(String resale999) {

        this.resale999 = resale999;

    }

    public String getResale999() {

        return this.resale999;

    }

    @XmlElement(name = "InvoiceCustomerNumber", required = false)
    private String invoiceCustomerNumber;

    public void setInvoiceCustomerNumber(String invoiceCustomerNumber) {

        this.invoiceCustomerNumber = invoiceCustomerNumber;

    }

    public String getInvoiceCustomerNumber() {

        return this.invoiceCustomerNumber;

    }

    @XmlElement(name = "CustomerReference", required = false)
    private String customerReference;

    public void setCustomerReference(String customerReference) {

        this.customerReference = customerReference;

    }

    public String getCustomerReference() {

        return this.customerReference;

    }

    @XmlElement(name = "NumberOfInvoiceCopies", required = false)
    private String numberOfInvoiceCopies;

    public void setNumberOfInvoiceCopies(String numberOfInvoiceCopies) {

        this.numberOfInvoiceCopies = numberOfInvoiceCopies;

    }

    public String getNumberOfInvoiceCopies() {

        return this.numberOfInvoiceCopies;

    }

    @XmlElement(name = "Language", required = false)
    private String language;

    public void setLanguage(String language) {

        this.language = language;

    }

    public String getLanguage() {

        return this.language;

    }

    @XmlElement(name = "VAT", required = false)
    private String vat;

    public void setVAT(String vat) {

        this.vat = vat;

    }

    public String getVAT() {

        return this.vat;

    }

    @XmlElement(name = "Backlog", required = false)
    private String backlog;

    public void setBacklog(String backlog) {

        this.backlog = backlog;

    }

    public String getBacklog() {

        return this.backlog;

    }

    @XmlElement(name = "OrderDiscountPercent", required = false)
    private String orderDiscountPercent;

    public void setOrderDiscountPercent(String orderDiscountPercent) {

        this.orderDiscountPercent = orderDiscountPercent;

    }

    public String getOrderDiscountPercent() {

        return this.orderDiscountPercent;

    }

    @XmlElement(name = "DiscountGroup", required = false)
    private String discountGroup;

    public void setDiscountGroup(String discountGroup) {

        this.discountGroup = discountGroup;

    }

    public String getDiscountGroup() {

        return this.discountGroup;

    }

    @XmlElement(name = "PriceCode", required = false)
    private String priceCode;

    public void setPriceCode(String priceCode) {

        this.priceCode = priceCode;

    }

    public String getPriceCode() {

        return this.priceCode;

    }

    @XmlElement(name = "StandardTextNumber", required = false)
    private String standardTextNumber;

    public void setStandardTextNumber(String standardTextNumber) {

        this.standardTextNumber = standardTextNumber;

    }

    public String getStandardTextNumber() {

        return this.standardTextNumber;

    }

    @XmlElement(name = "HoldOrder", required = false)
    private String holdOrder;

    public void setHoldOrder(String holdOrder) {

        this.holdOrder = holdOrder;

    }

    public String getHoldOrder() {

        return this.holdOrder;

    }

    @XmlElement(name = "TermsOfPayment", required = true)
    private String termsOfPayment;

    public void setTermsOfPayment(String termsOfPayment) {

        this.termsOfPayment = termsOfPayment;

    }

    public String getTermsOfPayment() {

        return this.termsOfPayment;

    }

    @XmlElement(name = "CreditDays", required = false)
    private String creditDays;

    public void setCreditDays(String creditDays) {

        this.creditDays = creditDays;

    }

    public String getCreditDays() {

        return this.creditDays;

    }

    @XmlElement(name = "TermsOfDelivery", required = false)
    private String termsOfDelivery;

    public void setTermsOfDelivery(String termsOfDelivery) {

        this.termsOfDelivery = termsOfDelivery;

    }

    public String getTermsOfDelivery() {

        return this.termsOfDelivery;

    }

    @XmlElement(name = "MannerOfTransport", required = true)
    private String mannerOfTransport;

    public void setMannerOfTransport(String mannerOfTransport) {

        this.mannerOfTransport = mannerOfTransport;

    }

    public String getMannerOfTransport() {

        return this.mannerOfTransport;

    }

    @XmlElement(name = "FreightFee", required = true)
    private String freightFee;

    public void setFreightFee(String freightFee) {

        this.freightFee = freightFee;

    }

    public String getFreightFee() {

        return this.freightFee;

    }

    @XmlElement(name = "PostageFee", required = false)
    private String postageFee;

    public void setPostageFee(String postageFee) {

        this.postageFee = postageFee;

    }

    public String getPostageFee() {

        return this.postageFee;

    }

    @XmlElement(name = "InsuranceFee", required = false)
    private String insuranceFee;

    public void setInsuranceFee(String insuranceFee) {

        this.insuranceFee = insuranceFee;

    }

    public String getInsuranceFee() {

        return this.insuranceFee;

    }

    @XmlElement(name = "AdministrationFee", required = false)
    private String administrationFee;

    public void setAdministrationFee(String administrationFee) {

        this.administrationFee = administrationFee;

    }

    public String getAdministrationFee() {

        return this.administrationFee;

    }

    @XmlElement(name = "InvoiceFee", required = false)
    private String invoiceFee;

    public void setInvoiceFee(String invoiceFee) {

        this.invoiceFee = invoiceFee;

    }

    public String getInvoiceFee() {

        return this.invoiceFee;

    }

    @XmlElement(name = "CustomersOrderNumberReference", required = true)
    private String customersOrderNumberReference;

    public void setCustomersOrderNumberReference(String customersOrderNumberReference) {

        this.customersOrderNumberReference = customersOrderNumberReference;

    }

    public String getCustomersOrderNumberReference() {

        return this.customersOrderNumberReference;

    }

    @XmlElement(name = "GoodsMarking", required = true)
    private String goodsMarking;

    public void setGoodsMarking(String goodsMarking) {

        this.goodsMarking = goodsMarking;

    }

    public String getGoodsMarking() {

        return this.goodsMarking;

    }

    @XmlElement(name = "HoldInvoice", required = false)
    private String holdInvoice;

    public void setcustomersOrderNumberReference(String holdInvoice) {

        this.holdInvoice = holdInvoice;

    }

    public String getcustomersOrderNumberReference() {

        return this.holdInvoice;

    }

    @XmlElement(name = "DeliveryAddressEngineer", required = false)
    private String deliveryAddressEngineer;

    public void setDeliveryAddressEngineer(String deliveryAddressEngineer) {

        this.deliveryAddressEngineer = deliveryAddressEngineer;

    }

    public String getDeliveryAddressEngineer() {

        return this.deliveryAddressEngineer;

    }

    @XmlElement(name = "DeliveryAddressLocation", required = false)
    private String deliveryAddressLocation;

    public void setDeliveryAddressLocation(String deliveryAddressLocation) {

        this.deliveryAddressLocation = deliveryAddressLocation;

    }

    public String getDeliveryAddressLocation() {

        return this.deliveryAddressLocation;

    }

    @XmlElement(name = "CountryDispatchedToArrivedFrom", required = false)
    private String countryDispatchedToArrivedFrom;

    public void setCountryDispatchedToArrivedFrom(String countryDispatchedToArrivedFrom) {

        this.countryDispatchedToArrivedFrom = countryDispatchedToArrivedFrom;

    }

    public String getCountryDispatchedToArrivedFrom() {

        return this.countryDispatchedToArrivedFrom;

    }

    @XmlElement(name = "VATRegNumberOfDebtorAddr", required = false)
    private String vatRegNumberOfDebtorAddr;

    public void setVATRegNumberOfDebtorAddr(String vatRegNumberOfDebtorAddr) {

        this.vatRegNumberOfDebtorAddr = vatRegNumberOfDebtorAddr;

    }

    public String getVATRegNumberOfDebtorAddr() {

        return this.vatRegNumberOfDebtorAddr;

    }

    @XmlElement(name = "NatureOfTransaction", required = false)
    private String natureOfTransaction;

    public void setNatureOfTransaction(String natureOfTransaction) {

        this.natureOfTransaction = natureOfTransaction;

    }

    public String getNatureOfTransaction() {

        return this.natureOfTransaction;

    }

    @XmlElement(name = "VATHandlingCode", required = false)
    private String vatHandlingCode;

    public void setVATHandlingCode(String vatHandlingCode) {

        this.vatHandlingCode = vatHandlingCode;

    }

    public String getVATHandlingCode() {

        return this.vatHandlingCode;

    }

    @XmlElement(name = "PortOfArrivalDispatch", required = false)
    private String portOfArrivalDispatch;

    public void setPortOfArrivalDispatch(String portOfArrivalDispatch) {

        this.portOfArrivalDispatch = portOfArrivalDispatch;

    }

    public String getPortOfArrivalDispatch() {

        return this.portOfArrivalDispatch;

    }

    @XmlElement(name = "CountryOfTrader", required = false)
    private String countryOfTrader;

    public void setCountryOfTrader(String countryOfTrader) {

        this.countryOfTrader = countryOfTrader;

    }

    public String getCountryOfTrader() {

        return this.countryOfTrader;

    }

     // ETC... 

}

Hier ist der Stack-Trace:

Exception in thread "main" com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 142 counts of IllegalAnnotationExceptions
Property orderRoutine is present but not specified in @XmlType.propOrder
    this problem is related to the following location:
        at private java.lang.String com.somecompany.jscentral.xml.integrator.soc.Header.orderRoutine
        at com.somecompany.jscentral.xml.integrator.soc.Header
Property creationDate is present but not specified in @XmlType.propOrder
    this problem is related to the following location:
        at private java.lang.String com.somecompany.jscentral.xml.integrator.soc.Header.creationDate
        at com.somecompany.jscentral.xml.integrator.soc.Header
Property creationTime is present but not specified in @XmlType.propOrder
    this problem is related to the following location:
        at private java.lang.String com.somecompany.jscentral.xml.integrator.soc.Header.creationTime
        at com.somecompany.jscentral.xml.integrator.soc.Header
Property userId is present but not specified in @XmlType.propOrder
    this problem is related to the following location:
        at private java.lang.String com.somecompany.jscentral.xml.integrator.soc.Header.userId
        at com.somecompany.jscentral.xml.integrator.soc.Header

.. USW ..

Property OrderRoutine appears in @XmlType.propOrder, but no such property exists. Maybe you meant orderRoutine?
    this problem is related to the following location:
        at com.somecompany.jscentral.xml.integrator.soc.Header
Property CreationDate appears in @XmlType.propOrder, but no such property exists. Maybe you meant creationDate?
    this problem is related to the following location:
        at com.somecompany.jscentral.xml.integrator.soc.Header
Property CreationTime appears in @XmlType.propOrder, but no such property exists. Maybe you meant creationTime?
    this problem is related to the following location:
        at com.somecompany.jscentral.xml.integrator.soc.Header

.. ETC .. 

Property InvoiceAddressNumber appears in @XmlType.propOrder, but no such property exists. Maybe you meant invoiceAddressNumber?
    this problem is related to the following location:
        at com.somecompany.jscentral.xml.integrator.soc.Header
Property WebOrder appears in @XmlType.propOrder, but no such property exists. Maybe you meant webOrder?
    this problem is related to the following location:
        at com.somecompany.jscentral.xml.integrator.soc.Header
Property Confirmed appears in @XmlType.propOrder, but no such property exists. Maybe you meant confirmed?
    this problem is related to the following location:
        at com.somecompany.jscentral.xml.integrator.soc.Header
Property ClientIdentity appears in @XmlType.propOrder, but no such property exists. Maybe you meant clientIdentity?
    this problem is related to the following location:
        at com.somecompany.jscentral.xml.integrator.soc.Header

    at com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(Unknown Source)
    at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(Unknown Source)
    at com.sun.xml.internal.bind.v2.ContextFactory.createContext(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
    at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
    at javax.xml.bind.ContextFinder.find(Unknown Source)
    at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
    at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
    at com.somecompany.jscentral.xml.AbstractXML.<init>(AbstractXML.java:21)
    at com.somecompany.jscentral.xml.integrator.soc.Header.<init>(Header.java:33)
    at com.somecompany.jscentral.xml.integrator.IntegratorSOCXML.main(IntegratorSOCXML.java:22)

Ich habe es anders versucht@XmlAccessorTypeist ... aber keine Veränderung. Ich habe auch versucht, die Methoden mit Anmerkungen zu versehen@XmlTransient und kein Unterschied. Was mache ich falsch?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage