执行者和HttPBuilder的Groovy,java.lang.LinkageError问题

时间:2010-12-28 21:25:16

标签: multithreading groovy httpbuilder

我有这个测试代码:

@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的罐子直接添加到类路径中,我也遇到了同样的问题。

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

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

我想指出http://jira.codehaus.org/browse/GROOVY-3495这个问题。如果修复有效,那么此处报告的问题在1.8.2,1.9-beta-3和1.7.11中得到修复。已经针对所有这些版本进行了发布,但现在已经发布了1.7.11