1

JAXBを使用して次のようなクラスをマーシャリングしようとしています

@javax.xml.bind.annotation.XmlType(propOrder = {"first", "last"})
public class Person
{
    private String first;
    private String last;
    public String getFirst(){
        return first;
    }
    public void setFirst(String first){
        this.first = first;
    }
    public String getLast(){
        return last;
    }
    public void setLast(String last){
        this.first = last;
    }
    public String getName(){
        return this.first + this.last;
    }
}

以下を使用して JaxbContext を取得しようとすると:

JAXBContext.newInstance(Person.class);

次の例外が発生します。

com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 182 counts of IllegalAnnotationExceptions
Property name is present but not specified in @XmlType.propOrder
this problem is related to the following location:
    at public java.lang.String myPackage.Person.getName()
    at myPackage.Person

ここに投稿された問題と非常によく似ています。

https://www.java.net//node/702784

ソリューションを追加する場所

 @XmlTransient

問題のある方法に。ただし、Java クラスを編集して注釈を更新することはできません。

これを乗り越える方法はありますか?


最終的に、JAXBIntroductions というライブラリを使用することになりました。これにより、実行時に一時的に注釈を導入できるようになり、オーバーヘッドが大きくなりすぎずに問題が軽減されました。見てくれたみんなありがとう


4

1 に答える 1