我使用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信息和库设置。
答案 0 :(得分:1)
我遇到了这个问题,你有多个架构,至少有两个架构,它们都没有命名空间,只需将命名空间分配给其中一个架构。