我有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")的问题,现在它正在工作。
我希望它也适用于你。
已解决更改文件权限