Grails资源:即使它存在于WAR中,图像也是404

时间:2012-07-31 16:43:14

标签: tomcat grails resources

我有3个Grails 2.x项目。对于这个例子,它们是:

ProjectCore    - A Grails plugin containing all reusable code (domains, taglibs, etc)
ProjectWeb     - Front facing web application.  Uses ProjectCore
ProjectAdmin   - Admin appliction.  Uses ProjectCore

几乎所有的图像,js,taglib,服务等都在ProjectCore中,在各个项目中只有app特定的控制器/ views / services / js / css。

使用NetBeans作为我的IDE,一切都在本地运行良好。我对ProjectAdmin项目进行了Warged,并将其部署到运行Tomcat 6的Ubuntu服务器上。应用程序中的所有内容都按预期工作,除了1个图像:avatar.png(包含在ProjectCore应用程序中)。

我正在使用g:resource标签创建所有图片链接,除了这一张图片外,它们都正确地正确解析到/static/images/some_image_name.png网址。我还验证了图像存在于战争中(位于插件/ ProjectCore /所有其他图像所在的图像)。

对于此特定图片,如果用户尚未为自己上传头像,我正在使用taglib(AvatarTagLib)来创建指向此图片的链接。此Taglib位于ProjectRoot中,但正在从其他项目中调用。我相信其他图像是从特定项目中的视图调用的,所以这可能是挂断的地方。

最初,当我部署了应用程序时,我忘了将war(和包含目录)的所有权更改为tomcat6:tomcat6,所以我不仅遇到了这个图像的问题,而且SpringSecurityPlugin中的messages.properties文件也出现了问题。我把所有内容都擦掉了,修复了权限,这解决了除了这个问题之外的所有问题。

以前有没有人遇到过这种行为,或者知道我可以解决的其他任何路径?

编辑:有一件事我忘了提及。当我尝试通过http://admin.mydomain.com/images/avatar.pnghttp://admin.mydomain.com/static/images/avatar.png直接访问图片时,都返回404.但是,我可以通过这种方式访问​​其他图片。

编辑2 :这不仅限于单张图片。它影响了插件中大约一半的图像。

4 个答案:

答案 0 :(得分:4)

升级资源插件为我解决了这个问题。我使用BuildConfig.groovy

更新了runtime ":resources:1.2.RC2"

答案 1 :(得分:1)

尝试将资源插件升级到1.2-RC1。

我有一个非常类似的问题,我的png中有3个会在/ images和/ static / images下直接访问时返回404错误。图像名为dot.png,calendar.png和dotted_vertical.png。如果我重命名它们(例如dotted_vertica.png或dotted_vertical1.png)它们可以工作,但我找不到任何其他相似之处或模式。确实很奇怪。

答案 2 :(得分:0)

如果没有看到代码,就不可能真的说出来。

1)您可能必须在插件中传递plugin = for resources 2)你试过r:resource吗?

如果你可以将它与一个简单的插件和应用程序隔离,请创建一个jira

答案 3 :(得分:0)

我遇到了同样的问题。

我解决了它将资源插件(运行时“:资源:1.1.6”)更改为BuildConfig.groovy中的webxml插件(编译“:webxml:1.4.1”),现在它正在运行。

我希望它也适合你。