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