IllegalAnnotationExceptions有没有的ObjectFactory与@XmlElementDecl为元素 [英] IllegalAnnotationExceptions There's no ObjectFactory with an @XmlElementDecl for the element

查看:3304
本文介绍了IllegalAnnotationExceptions有没有的ObjectFactory与@XmlElementDecl为元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一边跑与

java com.javavids.jaxb.sitemap.main.Main

我得到了以下错误

I got the following error

Exception in thread "main"    com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions
There's no ObjectFactory with an @XmlElementDecl for the element {unison}FromTime.
    this problem is related to the following location:
            at protected java.util.List com.javavids.jaxb.sitemap.UPM.Test.dateOrStartDateOrEndDate
            at com.javavids.jaxb.sitemap.UPM.Test
            at protected java.util.List com.javavids.jaxb.sitemap.UPM.Condition.content
            at com.javavids.jaxb.sitemap.UPM.Condition
            at protected com.javavids.jaxb.sitemap.UPM.Condition com.javavids.jaxb.sitemap.UPM.Rule.condition
            at com.javavids.jaxb.sitemap.UPM.Rule
            at protected java.util.List com.javavids.jaxb.sitemap.UPM.Policy.rule
            at com.javavids.jaxb.sitemap.UPM.Policy
            at protected java.util.List com.javavids.jaxb.sitemap.UPM.Configuration.policyOrConditionOrActionList
            at com.javavids.jaxb.sitemap.UPM.Configuration
            at protected com.javavids.jaxb.sitemap.UPM.Configuration com.javavids.jaxb.sitemap.UPM.BMWebgateConf.configuration
at com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException$Builder.check(Unknown Source)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(Unknown Source)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(Unknown Source)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl.<init>(Unknown Source)
at com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(Unknown Source)
at com.sun.xml.internal.bind.v2.ContextFactory.createContext(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
at javax.xml.bind.ContextFinder.newInstance(Unknown Source)
at javax.xml.bind.ContextFinder.find(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at javax.xml.bind.JAXBContext.newInstance(Unknown Source)
at com.javavids.jaxb.sitemap.main.Main.main(Main.java:55)

来源:
COM / javavids / JAXB /地图/ UPM / Test.java

Source: com/javavids/jaxb/sitemap/UPM/Test.java

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"conditionRef",
"attribute",
"op",
"dateOrStartDateOrEndDate",
"listRef",
"value"
 })
@XmlRootElement(name = "Test")

public class Test {

@XmlElement(name = "ConditionRef")
protected String conditionRef;
@XmlElement(name = "Attribute")
protected String attribute;
@XmlElement(name = "Op")
protected String op;
@XmlElementRefs({

    @XmlElementRef(name = "FromTime", namespace = "unison", type = JAXBElement.class, required = false),
    @XmlElementRef(name = "Date", namespace = "unison", type = JAXBElement.class, required = false),
    @XmlElementRef(name = "DurationInDays", namespace = "unison", type = JAXBElement.class, required = false),
    @XmlElementRef(name = "EndDate", namespace = "unison", type = JAXBElement.class, required = false),
    @XmlElementRef(name = "StartDate", namespace = "unison", type = JAXBElement.class, required = false),
    @XmlElementRef(name = "ToTime", namespace = "unison", type = JAXBElement.class, required = false),
    @XmlElementRef(name = "Weekday", namespace = "unison", type = JAXBElement.class, required = false),
    @XmlElementRef(name = "Frequency", namespace = "unison", type = JAXBElement.class, required = false)
})
protected List<JAXBElement<? extends Serializable>> dateOrStartDateOrEndDate;
@XmlElement(name = "ListRef")
protected String listRef;
@XmlElement(name = "Value")
protected String value;
@XmlAttribute(name = "Type", required = true)
protected String type;


 public List<JAXBElement<? extends Serializable>> getDateOrStartDateOrEndDate() {
    if (dateOrStartDateOrEndDate == null) {
        dateOrStartDateOrEndDate = new ArrayList<JAXBElement<? extends Serializable>>();
    }
    return this.dateOrStartDateOrEndDate;
}

来源:
COM / javavids / JAXB /地图/ UPM / ObjectFactory.java

Source: com/javavids/jaxb/sitemap/UPM/ObjectFactory.java

@XmlRegistry
public class ObjectFactory {

private final static QName _StartDate_QNAME = new QName("unison", "StartDate");    
private final static QName _Date_QNAME = new QName("unison", "Date");
private final static QName _ToTime_QNAME = new QName("unison", "ToTime");
private final static QName _CreateTime_QNAME = new QName("unison", "CreateTime");
private final static QName _EndDate_QNAME = new QName("unison", "EndDate");
private final static QName _FromTime_QNAME = new QName("unison", "FromTime");
private final static QName _DurationInDays_QNAME = new QName("unison", "DurationInDays");
private final static QName _ImportTime_QNAME = new QName("unison", "ImportTime");
private final static QName _Frequency_QNAME = new QName("unison", "Frequency");
private final static QName _Weekday_QNAME = new QName("unison", "Weekday");

@XmlElementDecl(namespace = "unison", name = "StartDate")
public JAXBElement<String> createStartDate(String value) {
    return new JAXBElement<String>(_StartDate_QNAME, String.class, null, value);
}

@XmlElementDecl(namespace = "unison", name = "FromTime")
public JAXBElement<String> createFromTime(String value) {
    return new JAXBElement<String>(_FromTime_QNAME, String.class, null, value);
}

来源:
COM / javavids / JAXB /地图/主/ Main.java

Source: com/javavids/jaxb/sitemap/main/Main.java

public static void main(String[] args) throws JAXBException {

    File file = new File("C:\\Users\\t_pavans\\workspace\\jaxbTest1\\medialossy.xml");

    JAXBContext jaxbContext = JAXBContext.newInstance(com.javavids.jaxb.sitemap.UPM.BMWebgateConf.class);
    Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();

    //BMWebgate Root element variables
    bmw = (BMWebgateConf) jaxbUnmarshaller.unmarshal(file);

注:code的工作完全没在我的Eclipse。但是,当我尝试在命令提示符下运行,它会抛出和异常

NOTE: The code work completely fine on my Eclipse. But when I try to run on command prompt, it throws and exception

推荐答案

在创建的JAXBContext 从你需要包括类的ObjectFactory 类传入创建类的JAXBContext

When create the JAXBContext from classes you need to include the ObjectFactory class in the classes passed in to create the JAXBContext.

JAXBContext jaxbContext = JAXBContext.newInstance(BMWebgateConf.class, ObjectFactory.class);

如果您的模型是从XML模式生成的话,我会建议创建的JAXBContext 包的名称:

If your model is generated from an XML schema then I would recommend creating the JAXBContext on the package name:

JAXBContext jaxbContext = JAXBContext.newInstance("com.javavids.jaxb.sitemap");

这篇关于IllegalAnnotationExceptions有没有的ObjectFactory与@XmlElementDecl为元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆