Проблема с плагином ImageTools в Grails - PullRequest
2 голосов
/ 14 марта 2009

У меня есть проект Grails с классом и контроллером домена изображений. Я только что установил плагин Grails ImageTools 1.0.4, и я хотел бы создавать эскизы для изображений, которые будут загружены.

My Image-Domain-Class:

    class Image {
byte[] data
//String name

byte[] thumbnail

static constraints = {
//name()
    data()
}
}

«Безопасное» действие в моем контроллере:

def save = {
def imageInstance = new Image(params)
def imageTool = new ImageTool()
imageTool.load(imageInstance.data)
imageTool.thumbnail(320)
imageInstance.thumbnail = imageTool.getBytes("JPEG") //Here is my problem!
if(!imageInstance.hasErrors() && imageInstance.save()) {
    flash.message = "Image ${imageInstance.id} created"
    redirect(action:show,id:imageInstance.id)
}
else {
    render(view:'create',model:[imageInstance:imageInstance])
}
}

Когда я запускаю свое приложение Grails и загружаю изображение, я получаю следующее сообщение об ошибке:

Ошибка 200: groovy.lang.MissingMethodException: Нет сигнатуры метода: ImageTool.getBytes () применим для типов аргументов: (java.lang.String) значения: {"JPEG"} Сервлет: грааль URI: /grailsproject/grails/image/save.dispatch Сообщение об исключении: Нет сигнатуры метода: ImageTool.getBytes () применим для типов аргументов: (java.lang.String) значения: {"JPEG"} Причина: groovy.lang.MissingMethodException: Нет сигнатуры метода: ImageTool.getBytes () применим для типов аргументов: (java.lang.String) значения: {"JPEG"} Класс: GrailsAuthenticationProcessingFilter В строке: [57]

В нем говорится, что метод getBytes () отсутствует, но метод все еще доступен. Моя IDE intelliJ также не распознает ошибок.

Так что я могу сделать? Может ли кто-нибудь помочь мне, пожалуйста? Извините за мой плохой английский. Если вы немец, посмотрите http://support -network.info / board / problem-mit-imagetools-getbytes-t3008.html .

Ответы [ 5 ]

1 голос
/ 15 марта 2009

Я использую Grails 1.0.4. Я мог бы исправить это сообщение об ошибке. Я просто скопировал метод getBytes () из репозитория git Ricardo (разработчика плагинов) и заменил старый на новый. Теперь все работает! Я не знаю, где была ошибка, но я счастлив, что решил ее.

Большое спасибо вам обоим!

0 голосов
/ 13 сентября 2009
0 голосов
/ 20 августа 2009

Я не знаю, что плагин на самом деле дает вам, используя JAI напрямую, ИМХО, это не так много.

Я использую ImageMagick вне процесса для преобразования изображений, и результаты превосходят то, что можно сделать с помощью JAI из того, что я видел. Конечно, если вы используете столько трафика, сколько не работает Amazon, это не вариант, однако, если вам нужно получить доход как можно быстрее, вы можете подумать о том, что я сделал.

Я использую apache-commons-exec, чтобы иметь хороший интерфейс для обработки открытия внешнего процесса и чтения данных из std в и из. Единственное, для чего я использую JAI - это чтение размеров изображений.

0 голосов
/ 15 марта 2009

Ответ, который вы получили от Джона, звучит правдоподобно - если вы установили новый плагин и видите код, но продолжаете получать эту ошибку только за пределами IntelliJ, вам следует попробовать очистить кэш Grails - вполне возможно, что старый копия плагина предварительно скомпилирована в кеш.

Используете ли вы Grails 1.1? Я еще не тестировал его с последними версиями, но я понимаю, что плагины хранятся не в проекте, а в отдельном каталоге. Дайте мне знать, и я попробую.

0 голосов
/ 14 марта 2009

Похоже, этот метод является довольно новым дополнением к классу (3/6/2009). Если вы убедились, что этот метод находится в файле ./plugins/imagetools/src/groovy/ImageTool.groovy, я бы порекомендовал запустить его:

grails clean

Если вы ранее использовали этот плагин, это может быть проблема с кешем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...