最初我得到了以下异常:我正在使用推土机5.4。我在类路径中有xerces jar文件。我是推土机的新手,所以非常感谢任何帮助。
org.dozer.MappingException:java.lang.IllegalAccessException:类org.dozer.util.ReflectionUtils无法使用修饰符" public&#34访问org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl类的成员;
我从本网站的其他帖子中读到,上述解决方案是为XmlGregorianCalender编写自定义转换器。
以下是自定义转换器的代码。目前正在调用convertFrom方法,并且所有传递的值都为null。
import javax.xml.datatype.XMLGregorianCalendar;
import org.dozer.DozerConverter;
公共类XMLGregorianCalendarCustomConvertor扩展 DozerConverter {
public XMLGregorianCalendarCustomConvertor() {
super(XMLGregorianCalendar.class, XMLGregorianCalendar.class);
// TODO Auto-generated constructor stub
}
@Override
public XMLGregorianCalendar convertTo(XMLGregorianCalendar source,
XMLGregorianCalendar destination) {
if (source == null) {
return null;
}
else{
return source;
}
}
@Override
public XMLGregorianCalendar convertFrom(XMLGregorianCalendar source,
XMLGregorianCalendar destination) {
if(destination == null){
return null;
}
else{
return destination;
}
}
}
<configuration>
<custom-converters>
<converter type="com.code.user.XMLGregorianCalendarCustomConvertor" >
<class-a>javax.xml.datatype.XMLGregorianCalendar</class-a>
<class-b>javax.xml.datatype.XMLGregorianCalendar</class-b>
</converter>
</custom-converters>
</configuration>
答案 0 :(得分:0)
如何通过引用复制它?如果它是你的选择,你可以这样做:
<configuration>
<copy-by-references>
<copy-by-reference>
javax.xml.datatype.XMLGregorianCalendar
</copy-by-reference>
</copy-by-references>
</configuration>
答案 1 :(得分:0)
问题是该类:
org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl不是以下内容的公共实现:
javax.xml.datatype.XMLGregorianCalendar
解决方案是简单地将is-accessible =“ true”属性添加到Dozer转换器配置中的目标类中,如下所示:
Mapping.xml
<configuration>
<custom-converters>
<converter type="com.code.user.XMLGregorianCalendarCustomConvertor" >
<class-a>javax.xml.datatype.XMLGregorianCalendar</class-a>
<class-b is-accessible="true">javax.xml.datatype.XMLGregorianCalendar</class-b>
</converter>
</custom-converters>
</configuration>
希望它会帮助任何人!