我有这个测试代码:
@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 添加到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/