multithreading - 执行器和HttPBuilder的Groovy,java.lang.LinkageError问题

标签 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,但是我也尝试通过直接将Ht​​tbBuilder的 jar 添加到classpath中来解决相同的问题。

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

谢谢您的帮助

最佳答案

我想针对此问题指向http://jira.codehaus.org/browse/GROOVY-3495。如果该修复程序有效,则此处报告的问题已在1.8.2、1.9-beta-3和1.7.11中修复。到目前为止,已经为所有版本(1.7.11)发布了版本

关于multithreading - 执行器和HttPBuilder的Groovy,java.lang.LinkageError问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4549647/

相关文章:

java - 当响应为 302 时,如何从 URL 请求图像?

multithreading - 多个文件描述符到同一个文件,C

python - 强制 CherryPy 子线程

java - 使用 "notify()"& "wait()"而不是 "suspend()"和 "resume()"来控制线程

gradle - Gradle/Groovy:将复制闭包移动到单独的util方法

groovy - 无法安装 HTTPBuilder

c++ - 有没有办法通过模板参数自动解析重载方法?

Grails/Groovy taglib 处理解析动态插入的标签

Groovy HTTPBuilder : Getting the entity content from a GZIPed Chunked response

json - Grails httpbuilder json响应