MissingMethodException в коде на основе учебника и который работал вчера - PullRequest
2 голосов
/ 17 мая 2011

У меня странная проблема с Groovy и HttpBuilder библиотекой.Первое, что нужно отметить, я новичок в Groovy.

Мой код основан на учебнике.Он просто загружает список файлов с HTTP-сервера.Код работал вчера, сегодня (после сборки рабочей области) нет.

Проблема:

Caught: groovy.lang.MissingMethodException: No signature of method: groovyx.net.http.HTTPBuilder.request() is applicable for argument types: (groovyx.net.http.Method, groovyx.net.http.ContentType, pl.linfo.groovy.samples.HttpTest$_main_closure1)
Possible solutions: request(groovyx.net.http.Method, groovy.lang.Closure)

Код:

def http = new HTTPBuilder( 'http://nbp.pl/Kursy/xml/dir.txt' )
    http.request( GET, TEXT ) { 
        response.success = { resp, reader ->
            println "${resp.statusLine}"
            files = reader.text.split ('\r\n')
        }
        response.'404' = {
            println "Not found!"
            return
        }
    };

Рабочая среда Eclipse 3.6

Я предполагаю, что проблема заключается в проблеме компиляции groovy, фрагмент кода groovy после перекомпиляции больше не соответствует Closure.Однако, как новичок в Groovy, у меня есть проблема, чтобы выяснить, что происходит, поэтому, пожалуйста, помогите.

1 Ответ

1 голос
/ 19 мая 2011

Это должно быть проблемой с плагином Eclipse Groovy. Код, который вы разместили, хорошо работает для меня, когда запускается с помощью интерпретатора Groovy.

$ cat hbuildertest.groovy 
@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.1' )
import groovyx.net.http.*
import static groovyx.net.http.ContentType.*
import static groovyx.net.http.Method.*

def http = new HTTPBuilder( 'http://nbp.pl/Kursy/xml/dir.txt' )
    http.request( GET, TEXT ) { 
        response.success = { resp, reader ->
            println "${resp.statusLine}"
            files = reader.text.split ('\r\n')
        }
        response.'404' = {
            println "Not found!"
            return
        }
    };


$ groovy hbuildertest.groovy 
May 19, 2011 12:59:08 AM groovyx.net.http.ParserRegistry getCharset
WARNING: Could not find charset in response
HTTP/1.1 200 OK
$ 

Также метод с подписью:

public Object request( Method m, Object contentType, Closure configClosure ) 
            throws ClientProtocolException, IOException 

существует в классе groovyx.net.http.HTTPBuilder, начиная с версии библиотеки не ниже 0.3.0.

...