2010-12-28 3 views
2

:그루비, java.lang.LinkageError의 실행자와 문제 및 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" 

를 얻을 나는 포도를 사용하고 있습니다. 그러나 클래스 패스에 직접 HttbBuilder의 항아리를 추가하여 시도했지만 동일한 문제가 발생합니다.

어떤 방식 으로든 해결할 수 있습니까? 나는 이상한 사실이 많이 발생하지만 항상 그런 것은 아니라고 말했다. 도움을

덕분에

+0

일종의 ClassLoader 문제 인 것 같습니다. 스크립트 대신 클래스로 코드를 사용해 보셨습니까? 또한 Groovy의 어떤 버전을 사용하고 있습니까? 항상 버그를 발견했을 수도 있지만 정확한 버전을 모른 채 확인하는 것은 어려울 것입니다. –

+0

@MattPassel 나는 groovy의 메일 링리스트에서 같은 질문을하고 버그가있는 것 같다. 나는 그것을보고했다 [jira link] (http://jira.codehaus.org/browse/GROOVY-4623) – res1

답변

1

나는이 문제에 대한 http://jira.codehaus.org/browse/GROOVY-3495를 가리 키도록 좋아한다. 거기서 수정 된 사항이 있으면 1.8.2, 1.9-beta-3 및 1.7.11로 수정되었습니다. 모든 이들에 대해 릴리스가 완료되었지만 지금은 1.7.11입니다.

관련 문제