3

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

无法在此上下文中解析具有命名空间“命名空间”和名称“名称”的 XML 元素声明

Eclipse 将引号内的“名称”下划线作为错误。这个类是手动创建的,而不是 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 版本:Juno with Package 1 4. JAXB 平台:通用 JAXB 2.1

请任何人都可以分享一些想法?


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

4

1 回答 1

1

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

于 2013-01-13T06:35:51.163 回答