Reputation: 29477
Please note: This question is almost a duplicate to this one titled "resource plugin error when upgrading from grails 2.3.8 2.4", however a few things are different that, in my mind, make it worthy of asking it as a separate question:
So, I ask that before you down/closevote this as a dupe, to please point out to me where in that other question the exact solution was provided that will also apply to my exact situation. If you can't do that, please don't down/closevote this question!
I am upgrading a Grails 2.3.6 app to Grails 2.4.4. When I do a run-app
I get:
Error |
2015-03-05 14:42:44,257 [localhost-startStop-1] ERROR [localhost].[/myapp] - Exception starting filter sitemesh
java.lang.ClassNotFoundException: org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter
at org.grails.plugins.tomcat.ParentDelegatingClassLoader.findClass(ParentDelegatingClassLoader.java:59)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:142)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:258)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4809)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5485)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Error |
2015-03-05 14:42:44,268 [localhost-startStop-1] ERROR core.StandardContext - Error filterStart
Error |
2015-03-05 14:42:44,270 [localhost-startStop-1] ERROR core.StandardContext - Context [/myapp] startup failed due to previous errors
Here's my BuildConfig
's plugins section:
plugins {
runtime ":resources:1.2.14"
compile 'org.grails.plugins:gson:1.1.4'
compile ":standalone:1.3"
build ":release:3.0.1"
runtime ":cached-resources:1.0"
compile ":cache-headers:1.1.7"
compile ":yammer-metrics:3.0.1-2"
compile ":scaffolding:2.1.2"
compile ':cache:1.1.1'
runtime ":hibernate:3.6.10.8" // or ":hibernate4:4.3.1.1"
runtime ":database-migration:1.3.8"
runtime ":jquery:1.11.1"
test(":geb:$gebVersion")
test(":spock:0.7") {
exclude "spock-grails-support"
}
}
I do not want to use asset-pipeline
if it can be avoided. Everything I've read so far states that using resources:1.2.14
makes a Grails 2.4.4 app compatible with the resources plugin.
Can someone explain the Grails 2.4.4 way of using sitemesh so that this error goes away? If using asset-pipeline
is unavoidable, what are the exact conversions I would need to make to my project to use it. I did try replacing the resource plugin with the latest asset pipeline plugin like so:
plugins {
...
//runtime ":resources:1.2.14"
compile ":asset-pipeline:1.8.3"
...
}
But the error didn't go away. Thoughts?
Upvotes: 4
Views: 3524
Reputation: 754
If you are here with Grails 4.x, take a look at your sitemesh.xml file.
In my case, the file was uneccessary after the Grails upgrade, so I deleted src/main/webapp/WEB-INF/sitemesh.xml to use the defaults. You will obviously want to keep a backup of this file until you know if you can solve the problem in the same way with your project.
Upvotes: 0
Reputation: 12076
I'm not sure why you wouldn't be able to use the resources plugin in Grails 2.4.4, but my recommendation would be to use the asset-pipeline
, as it is far superior to the older resources
plugin. Here is a very good article explaining why (from the author of the plugin), and how:
On second look, I believe this may be an issue with an incompatible web.xml
from version 2.3.x. which had the following:
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter</filter-class>
</filter>
Here is a link to the new 2.4.x web.xml
file:
Upvotes: 5