JaxB @XmlRootElement导致“无法解析xml元素声明”

时间:2013-01-10 16:32:25

标签: eclipse jaxb

我使用JAXB作为DTO在服务器和客户端之间设置稳定的接口。无论如何这没关系。重要的是我创建了一组导致以下编译错误的类。

  

无法使用命名空间'namespace'来解析XML元素声明   在此上下文中命名'name'

Eclipse将引号内的“name”作为错误加下划线。手动创建此类而不是生成xjc。

@XmlRootElement(name="name", namespace="namespace")
@XmlType(name="")
public class UserDTO {

    private UserType userType;

    @XmlElement
    public UserType getDTO(){
        return userType;
    }

    public void setDTO(UserType userType){
        this.userType=userType;
    }
}

其中UserType是xjc生成的类

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "userType", propOrder = {
    "userId",
    "userName"
})
public class UserType {getter;setter}

所以基本上UserDTO只是一个包装子jaxb类型的包装器。

我不确定它是否依赖于平台(它不应该是这样),反正只是提到这些代码在Netbeans上完美运行,但是当它来到Eclipse时,错误阻止了编译。

运行项目的环境是: 1. MacOsX Lion 2. JDK:1.6.0_37 3. Eclipse版本:带有包1的Juno 4. JAXB平台:通用JAXB 2.1

请有人可以分享一些想法吗?


ps:我添加了Manuel建议的JDK信息和库设置。

1 个答案:

答案 0 :(得分:1)

我遇到了这个问题,你有多个架构,至少有两个架构,它们都没有命名空间,只需将命名空间分配给其中一个架构。