2012-03-14 24 views
3

區別對待比方說,我有以下兩類:未引用靜態內部類的莫西和RI

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; 
} 

,我創建一個JAXBContext.newInstance(example.model.Model.class) JAXB上下文。

使用Java 6中的默認JAXB實現,該工作原理沒有任何註釋,生成的模型沒有提及「inner」。與EclipseLink我得到一個「名稱衝突。兩個類的XML類型與uri和內部名稱。」

我知道使至少一個內部類@XmlTransient擺脫了這個問題。我想知道的是,這種差異是如何與JAXB標準 相關的,我想,如果還有其他方法可以讓MOXy忽略這些類,如默認的JAXB實現那樣。

+0

聽起來像一個MOXy錯誤基本上。 – EJP 2012-03-14 23:53:04

+0

可能只是一個錯誤。如果有人不滿意JCP許可證確認情況屬實,我會去報告。 – 2012-03-15 07:28:55

+1

我不知道「不會對JCP許可不滿意」,但我仍然會報告它。 – EJP 2012-03-15 08:08:39

回答

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; 
} 
+0

該錯誤已經被修復。尼斯。有趣的是,附加到該bug的補丁只是刪除了一個明確標記爲「處理內部類」的循環。 – 2012-03-20 13:20:01