Jaxb 将MOXy与专用XmlAdapters一起使用?

Jaxb 将MOXy与专用XmlAdapters一起使用?,jaxb,eclipselink,moxy,Jaxb,Eclipselink,Moxy,我以前使用Sun的JAXB RI,但遇到了一个错误,无法使用自定义封送器封送到空字符串 为了避免这个问题,我现在切换到MOXy,但我发现,至少是开箱即用的MOXy不处理私有XmlAdapters。相反,它抛出了一个非法的AccessException。请参阅下面的示例代码,以获取复制此示例的代码 有没有办法说服MOXy使用私有XmlAdapters,还是我只能使用公共XmlAdapters?我当然已经阅读了文档,并试图通过谷歌搜索解决方案,但没有任何东西突然出现在我身上 @xmlacessort

我以前使用Sun的JAXB RI,但遇到了一个错误,无法使用自定义封送器封送到空字符串

为了避免这个问题,我现在切换到MOXy,但我发现,至少是开箱即用的MOXy不处理私有XmlAdapters。相反,它抛出了一个非法的AccessException。请参阅下面的示例代码,以获取复制此示例的代码

有没有办法说服MOXy使用私有XmlAdapters,还是我只能使用公共XmlAdapters?我当然已经阅读了文档,并试图通过谷歌搜索解决方案,但没有任何东西突然出现在我身上

@xmlacessortype(xmlacesstype.FIELD)
@XmlJavaTypeAdapter(StringField.StringFieldAdapter.class)
公共类StringField{
私有静态最终长serialVersionUID=1L;
@XmlValue
私有字符串值;
公共布尔isSet(){
返回值!=null;
}
公共无效重置(){
值=空;
}
公共字符串get(){
返回值;
}
公共无效集(字符串值){
这个值=值;
}
//注意—“非公开”课程与RI合作,但与MOXy不合作
私有静态类StringFieldAdapter扩展了XmlAdapter{
@凌驾
公共StringField解组(字符串v)引发异常{
StringField=新的StringField();
如果(v!=null){
字段集(v);
}
返回字段;
}
@凌驾
公共字符串封送处理(StringField v)引发异常{
如果(v!=null&&v.isSet()){
return v.get();
}
否则{
return null;//切换到MOXy,因为这在RI中不起作用
}
}
}
}

我已经能够重现您看到的错误。您可以使用以下错误跟踪我们在此问题上的进展:

解决方法

作为一种解决方法,您可以将
StringFieldAdapter
类公开

公共静态类StringFieldAdapter扩展了XmlAdapter{

太好了,谢谢-我会留意的。与此同时,我已经公开了所有适配器。