【问题标题】:@xmlschema jaxb package-info.java compilation error@xmlschema jaxb package-info.java 编译错误
【发布时间】:2011-01-28 12:19:17
【问题描述】:

我正在尝试在包级别使用注释,但我从 Eclipse 得到编译错误。

我有一个类 Head 带有以下包/注释:

 @javax.xml.bind.annotation.XmlSchema (
    xmlns = { 
      @javax.xml.bind.annotation.XmlNs(prefix = "com", 
                 namespaceURI="http://es.indra.transporte.common"),
      @javax.xml.bind.annotation.XmlNs( namespaceURI="http://www.w3.org/2001/XMLSchema")          
    },
    namespace = "http://es.indra.transporte.common", 
    elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED,
    attributeFormDefault = javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED
  )  
package es.indra.transporte.central.thalesinterface.common.beans;

我已经用上面的代码在es.indra.transporte.central.thalesinterface.common.beans 文件夹中创建了一个package-info.java,但我仍然收到编译错误

包注释必须在文件package-info.java

Head 类中。我正在使用 jdk6。

【问题讨论】:

    标签: java xsd jaxb


    【解决方案1】:

    我在尝试编译您的包信息时遇到的唯一问题是 @XmlNs 注释缺少前缀属性。

    这个:

    @javax.xml.bind.annotation.XmlNs( namespaceURI="http://www.w3.org/2001/XMLSchema")
    

    应该是:

    @javax.xml.bind.annotation.XmlNs(prefix="xsd",  namespaceURI="http://www.w3.org/2001/XMLSchema")
    

    以下更正的代码应该可以编译:

    @javax.xml.bind.annotation.XmlSchema (
        xmlns = { 
          @javax.xml.bind.annotation.XmlNs(prefix = "com", 
                     namespaceURI="http://es.indra.transporte.common"),
          @javax.xml.bind.annotation.XmlNs(prefix="xsd", namespaceURI="http://www.w3.org/2001/XMLSchema")
        },
        namespace = "http://es.indra.transporte.common", 
        elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED,
        attributeFormDefault = javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED
      )  
    package es.indra.transporte.central.thalesinterface.common.beans;
    

    示例见:

    【讨论】:

    • 嗨,恐怕前缀不是我的问题。我已经设置了它,但我仍然得到同样的错误。
    • 检查构建文件夹我发现 package-info.java 文件没有编译,我不知道为什么但我无法生成 .class 文件,我猜这是问题的原因.
    • 你好,我实现了生成 package-info.class 文件,但我仍然得到同样的错误。我完全迷路了。
    • Fran - 我能够重现错误的唯一方法是将该注释添加到名为“package-info.java”以外的文件中。您是否有可能在另一个类上错误地使用此注释(您提到了 Head 类)?在 Eclipse 的“问题”选项卡中,它指定什么作为问题的“资源”?
    • 嗨,Blaise,我已经部分解决了这个问题。看来,根据我在 Eclipse 中的这个链接 (wiki.eclipse.org/Dali/Indigo/JAXB_2.x/…) 中找到的,只能注释 package-info.java 文件。注释任何其他包声明会导致编译错误。所以我删除了“Head”类中的注释,只将它留在 package-info.java 文件中,编译错误消失了。
    猜你喜欢
    • 2011-10-09
    • 2023-03-25
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 2018-11-17
    相关资源
    最近更新 更多