Groovy, проблема java.lang.LinkageError с Executors и 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 непосредственно в путь к классам, и у меня возникла та же проблема.

Можно как-то решить? Как я уже сказал, странным фактом является то, что это происходит много раз, но не всегда.

Спасибо за помощь


person res1    schedule 28.12.2010    source источник
comment
Кажется, это какая-то проблема ClassLoader. Вы пробовали это с кодом в виде класса вместо скрипта? Кроме того, какую версию Groovy вы используете? Всегда возможно, что вы нашли ошибку, но ее будет трудно подтвердить, не зная точной версии.   -  person Matt Passell    schedule 08.03.2011
comment
@MattPassel Я задал тот же вопрос в списке рассылки groovy, и это похоже на ошибку. Я сообщил об этом ссылка jira   -  person res1    schedule 09.03.2011


Ответы (1)


Мне нравится указывать на https://issues.apache.org/jira/browse/GROOVY-3495 для этой проблемы. Если указанное исправление работает, проблема, описанная здесь, исправлена ​​в версиях 1.8.2, 1.9-beta-3 и 1.7.11. Релизы были сделаны для всех из них, кроме 1.7.11.

person blackdrag    schedule 05.10.2011