当前位置: 首页 > 面试题库 >

IllegalAnnotationsException:类具有两个相同名称的属性

颜英博
2023-03-14
问题内容

我正在尝试使用RSA 7.5和Websphere 7服务器开发IBM JAX_WS
Web服务。因为我是一个初学者,所以我遵循Java类优先方法,即首先创建Java类,然后生成WSDL文件。

当我尝试创建wsdl文件时,出现异常:

java.security.PrivilegedActionException:com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException:IllegalAnnotationsException类的1个计数具有两个名称相同的属性“
planId”

我在这里引用的课程看起来像这样:

public class MemberDetails{
    @XMLElement(required=true)
    private String planId;
    //public getters and setters for the planId;
}

我不知道为什么会发生这种异常。通过谷歌搜索,我尝试了几种解决方案,但是没有一个对我有用:(

注意:

这是我在整个工作空间中使用的唯一注释。我不确定这是否取决于其他注释。但是我每次都尝试使用诸如@XMLElement(name =“
Plan”,required = true),@ XMLType之类的方法,但是每次遇到此异常时,我都会尝试使用。

wsgen期间发生此异常。( java.lang.reflect.InvocationTargetException

编辑

基本上,当我们从java服务方法创建wsdl并在SOAP UI中打开该WSDL时,我们就<!-- Optional-->位于每个元素的顶部。我想删除此选项标签<!--Optional-->标签,因此我尝试使用@XMLElement(required
= true)方法,以便在SOAP UI <!--Optional-->中打开WSDL时对于强制性元素不会出现。

根据我的概念,@ XMLElement(required = true)会将minOccurs设置为1,即大于零,因此当我在SOAP
UI中打开时,将从WSDL中删除可选注释。但是不幸的是它不起作用,因此我的概念是错误的。生成WSDL之后,我可以看到minOccurs仍然为0。

请说明在SOAP UI中打开WSDL时如何删除可选标记。

问候,


问题答案:

默认情况下, JAXB(JSR-222)
实现处理公共访问器方法和带注释的字段。如果您为字段添加注释,则该字段也具有get / set方法,则将出现此异常:

如果要注释字段,则应指定 @XmlAccessorType(XmlAccessType.FIELD)

@XmlAccessorType(XmlAccessType.FIELD)
public class MemberDetails{
    @XMLElement(required=true)
    private String planId;
    //public getters and setters for the planId;
}

或者您可以注释属性

public class MemberDetails{

    private String planId;

    @XMLElement(required=true)
    public String getPlanId() {
        return planId;
    }
}

想要查询更多的信息

  • http://blog.bdoughan.com/2011/06/using-jaxbs-xmlaccessortype-to.html


 类似资料:
  • 我正在尝试使用RSA 7.5和Websphere 7服务器开发IBM JAX_WS web服务。因为我是初学者,所以我遵循Java类优先的方法,即首先创建Java类,然后生成WSDL文件。 当我尝试创建wsdl文件时,我得到一个异常: JAVA安全PrivilegedActionException:com。太阳xml。内部的绑定v2。运行时。IllegalAnnotationsException:

  • 问题内容: 我正在用C#编写.NET Framework 3.5。 我正在尝试将某些Json解析为JObject。 Json如下: 当我尝试将此Json解析为JObject时,JObject仅了解LargeBox。SmallBox和MedBox的信息丢失。显然,这是因为它将“ TBox”解释为一个属性,并且该属性已被覆盖。 我从Delphi编码的服务中收到此Json。我正在尝试为该服务创建C#代理

  • 假设您有2个包,并且有名为-Test的公共类。 第一个包。测试 第二包测试 它们中的每一个都有实例变量-x。 在第一种情况下-int x=2; 在第二种情况下-int x=3; 我想导入FirstPackage。在第二个包内测试。测试并打印值为2的x。 我的代码: 但是输出是3。如何打印?

  • 问题内容: 说我有一个类似的代码: 我应该是完全合格的班级名称吗?我可以摆脱导入声明吗?这种情况在现实世界编程中是否常见? 问题答案: 你可以忽略导入语句,并使用整个路径引用它们。例如: 但是我要说的是,使用两个具有相同名称和类似功能的类通常不是最好的主意,除非你能真正弄清是哪个。

  • 获取JAXB异常,如“两个类具有相同的XML类型名称…”, 以下是例外情况的详细信息: 异常在线程"main"com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsExcema: 1计数的IllegalAnnotationExceptions两个类有相同的XML类型名称"城市"。使用@XmlType.name和@XmlType.namespa

  • 我有一个采访问题-C#,是否可以在一个类中实现,从接口继承有两个具有相同名称和相同签名的方法?