2010-12-28 12 views
2

ich diesen Test-Code haben:Groovy, java.lang.LinkageError Problem mit Testamentsvollstrecker und 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() 

die meisten der Zeit, aber nicht immer bekomme ich eine 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" 

In diesem Beispiel Ich benutze Grape, aber ich habe versucht, indem Sie die Gläser von HttbBuilder direkt zu Classpath zu und ich bekomme das gleiche Problem.

Es ist möglich, in irgendeiner Weise zu lösen? Wie ich sagte, die seltsame Tatsache ist, dass es oft passiert, aber nicht immer.

Danke für die Hilfe

+0

Es scheint eine Art von ClassLoader-Problem zu sein. Hast du es mit dem Code als Klasse anstatt als Skript versucht? Welche Version von Groovy benutzt du? Es ist immer möglich, dass Sie einen Fehler gefunden haben, aber es wäre schwer zu bestätigen, ohne die genaue Version zu kennen. –

+0

@MattPassel Ich habe die gleiche Frage auf groovy Mailing-Liste gestellt und scheint ein Bug. Ich habe es gemeldet [jira link] (http://jira.codehaus.org/browse/GROOVY-4623) – res1

Antwort

1

Ich mag für dieses Problem zu http://jira.codehaus.org/browse/GROOVY-3495 zeigen. Wenn der Fix dort funktioniert, dann ist das hier berichtete Problem in 1.8.2, 1.9-Beta-3 und 1.7.11 behoben. Versionen wurden für alle von ihnen gemacht, aber jetzt 1.7.11