3

次の2つのクラスがあるとしましょう:

package example.model;

public class Model {
    public static class Inner {}

    public Other prop;
}

package example.model;

public class Other {
    public static class Inner {}

    public String prop;
}

で JAXB コンテキストを作成しますJAXBContext.newInstance(example.model.Model.class)

Java 6 のデフォルトの JAXB 実装では、これはアノテーションなしで機能し、生成されたモデルは"inner"について言及しません。EclipseLink を使用すると、「名前の衝突です。2 つのクラスには、uri と名前が inner の XML タイプがあります。」というメッセージが表示されます。

内部クラス @XmlTransient の少なくとも 1 つを作成すると、問題が解決されることを私は知っています。私が知りたいのは、この違いが JAXB 標準にどのように関係しているか、また、デフォルトの JAXB 実装のように MOXy がこれらのクラスを無視するようにする他の方法があるかどうかです。

4

1 に答える 1

2

これは、EclipseLink JAXB (MOXy)のバグのようです。現在、EclipseLink 2.3.3 および 2.4.0 ストリームの修正に取り組んでいます。次のリンクを使用して、進行状況を追跡できます。

修正が利用可能になると、次のリンクからナイトリー ビルドをダウンロードできるようになります。

回避策

あなたが言及したように、静的内部クラスを でマークすることができます@XmlTransient

package example.model;

public class Model {
    @XmlTransient        
    public static class Inner {}

    public Other prop;
}
于 2012-03-15T19:33:28.667 に答える