【问题标题】:IllegalAnnotationExceptions in the MemberSubmissionEndpointReference classMemberSubmissionEndpointReference 类中的 IllegalAnnotationExceptions
【发布时间】:2019-08-16 20:39:41
【问题描述】:

我已经解决这个问题两天了。我需要帮助

我正在运行 Spring mvc,一切看起来。我将另一个 web 服务的客户端添加为依赖项,然后当我尝试测试时,我得到了这个异常。

Caused by: com.sun.xml.bind.v2.runtime.IllegalAnnotationsException: 2 counts of IllegalAnnotationExceptions
Two classes have the same XML type name "address". Use @XmlType.name and @XmlType.namespace to assign different names to them.
    this problem is related to the following location:
        at com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Address
        at public com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Address com.sun.xml.ws.developer.MemberSubmissionEndpointReference.addr
        at com.sun.xml.ws.developer.MemberSubmissionEndpointReference
    this problem is related to the following location:
        at javax.xml.ws.wsaddressing.W3CEndpointReference$Address
        at private javax.xml.ws.wsaddressing.W3CEndpointReference$Address javax.xml.ws.wsaddressing.W3CEndpointReference.address
        at javax.xml.ws.wsaddressing.W3CEndpointReference
Two classes have the same XML type name "elements". Use @XmlType.name and @XmlType.namespace to assign different names to them.
    this problem is related to the following location:
        at com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements
        at public com.sun.xml.ws.developer.MemberSubmissionEndpointReference$Elements com.sun.xml.ws.developer.MemberSubmissionEndpointReference.referenceProperties
        at com.sun.xml.ws.developer.MemberSubmissionEndpointReference
    this problem is related to the following location:
        at javax.xml.ws.wsaddressing.W3CEndpointReference$Elements
        at private javax.xml.ws.wsaddressing.W3CEndpointReference$Elements javax.xml.ws.wsaddressing.W3CEndpointReference.referenceParameters
        at javax.xml.ws.wsaddressing.W3CEndpointReference

进一步分析,我发现这些冲突(地址/元素)存在于属于我的依赖项之一的类 com.sun.xml.ws.developer.MemberSubmissionEndpointReference

<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.5</version>

它所属的另一个类 javax.xml.ws.wsaddressing.W3CEndpointReference 可能在我的依赖项中的客户端中。

我该如何解决这个问题!!它们不是我的课程,所以我无法修改它们。我不知道该怎么办。我尝试了排除、绑定..等,但没有任何效果

编辑:

我使用 Eclipse for IDE 和 websphere 作为应用服务器。这是冲突的 2 个 xml 依赖项

XML1:
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<version>2.2.5</version>

XML2:
<dependency>
    <groupId>javax.xml.ws</groupId>
    <artifactId>jaxws-api</artifactId>
    <version>2.2.5</version>
</dependency>

如果我将 xml1 升级到 2.3.5,那么问题就消失了,但问题是 2.3.5 在 Java 8 中被编译,而我的应用程序的其余部分是 Java 7(我被工作锁定)并且它正在抛出兼容性错误。所以我正在寻找其他方法来解决它

【问题讨论】:

  • 你可以发布maven依赖吗?
  • 如果您发帖,我认为每个人都会得到更好的帮助。您的 IDE、应用程序服务器和您的 pom.xml 与假定的冲突依赖项是什么
  • @HassamAbdelillah 请查看编辑后的答案

标签: java spring jax-ws


【解决方案1】:

存在依赖冲突。 在您发布完整的 pom.xml 之前,我无法说出确切的解决方案,但这是我将如何解决的方法: 在intellij idea ide 中安装“Maven Helper”插件,重新启动 IDE,打开 pom 并在底部打开 dependency analizer 选项卡。在那里你有冲突和一个简单的方法来排除冲突的包,只需单击一下。

here小伙也遇到了同样的问题,他用手一个个过滤罐子。

UPD。还找到了this issue,你没有尝试将那个库的版本增加到最新的2.3.2吗? (好像在2.2.8修复)

【讨论】:

  • 您好,我知道冲突来自哪里,但我不知道如何解决。就像我说的,jaxws-rt 2.2.5(或 2.2.8)有一个类与客户端库 Iam 冲突(客户端库代码是使用 JAX-WS RI 2.2.10 生成的)。您共享的链接是针对我未使用的 Metro 问题本质上是 IBM 实现和 Sun 实现之间的冲突
  • 您是否尝试过我指出的使用 maven 助手插件的方法?
  • 问题是我正在使用eclipse。由于它是工作计算机,因此安装新 IDE 时我没有太大的灵活性。 eclipse中有没有等价的东西?
  • 顺便说一句,如果我使用 2.3.2 版本,问题就会消失,但是在启动时我会收到一个错误,抱怨版本不兼容(我的 websphere 运行的是 1.7,但库是 1.8)。我不知道如何超越这一点
【解决方案2】:

可能的问题是 jaxws-api 冲突,其中包含 W3CEndpointReferencestatic Address 方法。

jaxws-rt 包含 jaxws-api 所以,我建议在 Eclipse 中转到 Dependency Hierarchy 并检查哪些工件正在使用 jaxws-api 并尝试将其从您认为不需要的工件中排除。

附带说明jaxws-rt 包含MemberSubmissionEndpointReference,其中还包含Address 作为成员。因此,值得尝试的可能解决方案是将jaxws-apijaxws-rt 中排除,但您的jaxws-rt 可能无法按预期工作。

【讨论】:

  • 我尝试了您排除它的建议,但排除的库出现了不同的错误,所以我这个选项不起作用。我似乎找不到使用 jaxws-api 的任何其他库
【解决方案3】:

我认为没有必要将这些 api 作为依赖项添加到您的 pom.xml 中。默认情况下已经包含在JDK中(rt.jar)。我看不出在哪种情况下您需要在 pom.xml 中将它们定义为依赖项。

除了这些类的源代码之外,还声明了不同的命名空间来避免这些元素冲突:

MemberSubmissionEndpointReference

@XmlElement(
    name = "Address",
    namespace = "http://schemas.xmlsoap.org/ws/2004/08/addressing"
)
public MemberSubmissionEndpointReference.Address addr;

W3CEndpointReference

private W3CEndpointReference.Address address;
@XmlElement(
    name = "ReferenceParameters",
    namespace = "http://www.w3.org/2005/08/addressing"
)

所以问题是,为什么要在 pom.xml 中加载这些依赖项?

编辑 2:假设您必须保持当前的依赖关系

您似乎想上传同一个 web 应用的两个版本,但略有不同。

您可以按照JBoss AS Thread 中的建议进行操作,在您的 websphere 中保留最少的 Jars,以保持您的应用程序运行。

以及更复杂的任务。这些类和 api 在您的应用中扮演什么角色?

【讨论】:

  • 这些都是现有的相当大的项目。当我删除它们时,在启动过程中左右发生崩溃,并且服务从未启动。
  • 在您的项目代码源中检查这些类时。它们是指向 JDK 7 中的 rt.jar 还是指向您发布的依赖项?
  • 我如何仔细检查?搜索文件不搜索依赖的依赖(依赖2来自依赖的POM文件)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多