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



我有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中,在单个项目中只有特定于应用程序的控制器/views/services/js/css。

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

我使用g:resource标记来创建所有的图像链接,它们都正确地解析为/static/images/some_image_name.png url,除了这一个图像。我还验证了该图像是否存在于战争中(位于所有其他图像所在的plugins/ProjectCore/images中)。

对于这个特定的图像,如果用户还没有上传自己的化身,我将使用标签库(AvatarTagLib)来创建到这个图像的链接。此Taglib位于ProjectRoot中,但正在从其他项目中调用。我相信其他图像是从特定项目中的视图调用的,所以这可能是问题所在。

最初,当我部署应用程序时,我忘记将war(和包含目录)的所有权更改为tomcat6:tomcat6,所以我不仅对这个映像有问题,而且对SpringSecurityPlugin的messages.properties文件也有问题。我把它全部删除,修复了权限,解决了除此之外的所有问题。

以前有人遇到过这种行为吗,或者知道我可以走其他途径来解决这个问题吗?

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

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

升级资源插件为我解决了这个问题。我用runtime ":resources:1.2.RC2" 更新了BuildConfig.groovy

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

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

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

1) 您可能需要为插件中的资源传递plugin=2) 你试过r:resource吗?

如果您可以将其隔离为一个微不足道的插件和应用程序,请创建一个jira

我也遇到过同样的问题。

我解决了将BuildConfig.groovy中的resources插件(运行时":resources:1.1.6")更改为webxml插件(编译":webxml:1.4.1")的问题,现在它正在工作。

我希望它也适用于你。

已解决更改文件权限

最新更新