【问题标题】:java.lang.LinkageError: "javax/activation/DataHandler"java.lang.LinkageError:“javax/activation/DataHandler”
【发布时间】:2014-01-16 16:16:35
【问题描述】:

所以,我最近将我们的 Grails 应用程序从版本 1.3.7 升级到了 2.3.4。我现在在尝试提取消息内容并将其记录到数据库的 SOAP 处理程序中遇到异常。这在 1.3.7 中有效,但我假设一些新的依赖项或某些东西与类路径混淆了。

代码如下所示:

private String extractSOAPMessage(SOAPMessageContext smc) {
    Source source =  smc.getMessage().getSOAPPart().getContent()

    TransformerFactory factory = TransformerFactory.newInstance()
    Transformer transformer = factory.newTransformer()
    transformer.setOutputProperty( OutputKeys.METHOD, "xml" )
    java.io.StringWriter writer = new StringWriter()
    Result result = new StreamResult( writer )
    transformer.transform( source, result )

    return writer.toString()
}

我看到的例外是:

Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of <bootloader>) previously initiated loading for a different type with name "javax/activation/DataHandler"

它发生在这一行: 源source = smc.getMessage().getSOAPPart().getContent()

看起来罪魁祸首是 getSOAPart() 调用。

请注意,我正在为 Grails 使用 1.1.1 版本的 cxf 插件。对此的任何帮助将不胜感激。我发现了几个类似的解决方案问题,但没有一个是针对“javax/activation/DataHandler”的,所以我不确定这里发生了什么。

【问题讨论】:

  • 我怀疑某些东西对您需要排除的 activation 库具有传递依赖 - 尝试依赖报告。从 Java 6 开始,JAR 就不再是必需的,因为它内置在核心 Java 类库中,但许多东西仍然依赖于它,因此它们可以在 Java 5 上工作(或者可以追溯到 Java 5 仍在广泛使用的时候) .
  • 激活 jar 确实是问题所在。谢谢!
  • 没问题,我已经把我的评论变成了你可以接受的答案。

标签: grails soap cxf


【解决方案1】:

我怀疑某些东西对您需要排除的 activation 库具有传递依赖 - 尝试运行 dependency-report。从 Java 6 开始,JAR 就不再是必需的,因为它内置在核心 Java 类库中,但许多东西仍然依赖于它,因此它们可以在 Java 5 上工作(或者可以追溯到 Java 5 仍在广泛使用的时候) .

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-17
    • 2012-01-01
    • 2018-04-05
    • 2021-12-24
    • 1970-01-01
    • 2019-03-26
    • 2012-02-08
    • 1970-01-01
    相关资源
    最近更新 更多