Java Grails中ImageTools插件的问题

Java Grails中ImageTools插件的问题,java,image,grails,plugins,groovy,Java,Image,Grails,Plugins,Groovy,我有一个带有映像域类和控制器的grails项目。 我刚刚安装了Grails1.0.4插件,我想为上传的图像生成缩略图 我的图像域类: class Image { byte[] data //String name byte[] thumbnail static constraints = { //name() data() } } 我的控制器中的“安全”操作: def save = { def imageInstance = new Image(params) def im

我有一个带有映像域类和控制器的grails项目。 我刚刚安装了Grails1.0.4插件,我想为上传的图像生成缩略图

我的图像域类:

    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”} Servlet:grails URI:/grailsproject/grails/image/save.dispatch 异常消息:没有方法ImageTool.getBytes()的签名适用于参数类型:(java.lang.String)值:{“JPEG”} 原因:groovy.lang.MissingMethodException:没有方法ImageTool.getBytes()的签名适用于参数类型:(java.lang.String)值:{“JPEG”} 类:GrailAuthenticationProcessingFilter 第[57]行

它表示缺少getBytes()方法,但该方法仍然可用。我的IDE intelliJ也不识别任何错误

那我该怎么办?有人能帮我吗?
对不起,我的英语不好。如果你是德国人,请看。

看起来该方法是对该类的一个全新添加(3/6/2009)。如果您已经验证了该方法位于./plugins/imagetools/src/groovy/ImageTool.groovy文件中,我建议您运行:

grails clean

如果您以前使用过此插件,则可能是缓存问题。

您从John那里收到的回复听起来不错-如果您已安装了新插件,并且可以看到代码,但仅在IntelliJ之外出现此错误,您应该尝试清理grails缓存——很可能是在缓存上预编译了插件的旧副本

您正在使用Grails1.1吗?我还没有用最新的grails对它进行测试,但我知道它不会将插件放在项目下,而是放在一个单独的目录中。一定要让我知道,我会尝试一下。

我使用Grails1.0.4。 我可以修复此错误消息。我刚刚从Ricardo(插件开发人员)的git存储库复制了getBytes()方法,并用新方法替换了旧方法。现在一切都好了!我不知道错误在哪里,但我很高兴我解决了它


非常感谢你们两位

我不知道这个插件到底给了你什么直接使用JAI的好处,我知道它没什么用

我使用ImageMagick out-of-process进行图像转换,从我所看到的结果来看,其效果优于JAI。当然,如果你做的流量和亚马逊的流程一样,不是一种选择,但是如果你需要尽快获得收入,那么你可能会考虑我所做的事情。p>
我使用ApacheCommonsExec提供了一个很好的接口,用于处理打开外部进程和从std中读取数据。我使用JAI的唯一目的就是读取图像的大小。

在我的ImageTool.groovy中尝试此方法。我将grails清理干净,但没有效果,问题仍然存在。一些想法?Grails1.0.4还是1.1?是否存在该插件的早期版本?在非jetty容器上运行应用程序或war部署时出现问题?是否尝试在IDE内外运行项目?我已经使用Grails1.0.4和1.1尝试了您的代码,并且成功了。