【问题标题】:Groovy, java.lang.LinkageError problem with Executors and HttPBuilderExecutors 和 HttPBuilder 的 Groovy、java.lang.LinkageError 问题
【发布时间】:2010-12-28 21:25:15
【问题描述】:

我有这个测试代码:

@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.1' )
import java.util.concurrent.ExecutorService
import java.util.concurrent.Executors
import groovyx.net.http.HTTPBuilder


ExecutorService executor = Executors.newCachedThreadPool()

(1..10).each {

  executor.execute(new Runnable(){
    void run() {

         def http = new HTTPBuilder('http://www.google.com')
    }

  })
}
executor.shutdown()

大多数时候,但并不总是我得到一个 LinkageError

Exception in thread "pool-1-thread-8" java.lang.LinkageError: loader (instance of  org/codehaus/groovy/tools/RootLoader): attempted  duplicate class definition for name: "org/apache/commons/logging/impl/LogFactoryImpl"

在此示例中,我使用的是 Grape,但我尝试将 HttbBuilder 的 jar 也直接添加到类路径中,但我遇到了同样的问题。

有可能以某种方式解决吗? 正如我所说,奇怪的事实是它发生了很多次,但并非总是如此。

感谢您的帮助

【问题讨论】:

  • 这似乎是某种 ClassLoader 问题。您是否尝试过将代码作为类而不是脚本?另外,您使用的是什么版本的 Groovy?您总是有可能发现了一个错误,但如果不知道确切的版本就很难确认。
  • @MattPassel 我在 groovy 的邮件列表上问了同样的问题,似乎是一个错误。我举报了jira link

标签: multithreading groovy httpbuilder


【解决方案1】:

对于这个问题,我想指出 https://issues.apache.org/jira/browse/GROOVY-3495。如果修复有效,那么此处报告的问题已在 1.8.2、1.9-beta-3 和 1.7.11 中修复。除了 1.7.11 之外,所有这些都已完成发布

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2017-06-19
    • 2015-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多