Grails 2.4 ClassNotFoundException:Sitemesh GrailsPageFilter
Grails 2.4 ClassNotFoundException: Sitemesh GrailsPageFilter
请注意:这个问题几乎与this one titled "resource plugin error when upgrading from grails 2.3.8 2.4"重复,但是有几点不同,在我的想法,让它值得作为一个单独的问题来问:
- 在那个问题中,问题和任何答案都没有解释为什么会出现这个错误,只是说明所使用的插件不再是用于加载 sitemesh 的官方 Grails 插件
- 最重要的是:在那个问题中,从来没有一个被接受的答案,也没有来自原始发布者的任何关于最终解决方案的验证。我不会那样做。
所以,我问你之前 down/closevote 这是一个骗局,请向我指出在另一个问题中提供 exact 解决方案的位置也适用于我的 exact 情况。 如果你做不到,请不要down/closevote这个问题!
我正在将 Grails 2.3.6 应用程序升级到 Grails 2.4.4。当我执行 run-app
时,我得到:
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
这是我的 BuildConfig
的插件部分:
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"
}
}
我不想想用asset-pipeline
如果可以避免的话。到目前为止我读到的所有内容都表明使用 resources:1.2.14
可以使 Grails 2.4.4 应用程序与资源插件兼容。
有人可以解释一下 Grails 2.4.4 使用 sitemesh 的方式来消除这个错误吗?如果使用 asset-pipeline
是不可避免的,那么我需要对我的项目进行哪些确切的转换才能使用它。我确实尝试用最新的资产管道插件替换资源插件,如下所示:
plugins {
...
//runtime ":resources:1.2.14"
compile ":asset-pipeline:1.8.3"
...
}
但错误并没有消失。想法?
我不确定为什么您不能在 Grails 2.4.4 中使用资源插件,但我的建议是使用 asset-pipeline
,因为它比旧版本好得多resources
插件。这是一篇很好的文章,解释了为什么(来自插件的作者)以及如何:
编辑
再看一遍,我认为这可能是版本 2.3.x 中不兼容 web.xml
的问题。其中有以下内容:
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter</filter-class>
</filter>
这里是link新的2.4.xweb.xml
文件:
如果您在这里使用 Grails 4.x,请查看您的 sitemesh.xml 文件。
在我的例子中,Grails 升级后文件不再需要,所以我删除了 src/main/webapp/WEB-INF/sitemesh.xml 以使用默认值。您显然希望保留此文件的备份,直到您知道是否可以用与您的项目相同的方式解决问题。
请注意:这个问题几乎与this one titled "resource plugin error when upgrading from grails 2.3.8 2.4"重复,但是有几点不同,在我的想法,让它值得作为一个单独的问题来问:
- 在那个问题中,问题和任何答案都没有解释为什么会出现这个错误,只是说明所使用的插件不再是用于加载 sitemesh 的官方 Grails 插件
- 最重要的是:在那个问题中,从来没有一个被接受的答案,也没有来自原始发布者的任何关于最终解决方案的验证。我不会那样做。
所以,我问你之前 down/closevote 这是一个骗局,请向我指出在另一个问题中提供 exact 解决方案的位置也适用于我的 exact 情况。 如果你做不到,请不要down/closevote这个问题!
我正在将 Grails 2.3.6 应用程序升级到 Grails 2.4.4。当我执行 run-app
时,我得到:
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
这是我的 BuildConfig
的插件部分:
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"
}
}
我不想想用asset-pipeline
如果可以避免的话。到目前为止我读到的所有内容都表明使用 resources:1.2.14
可以使 Grails 2.4.4 应用程序与资源插件兼容。
有人可以解释一下 Grails 2.4.4 使用 sitemesh 的方式来消除这个错误吗?如果使用 asset-pipeline
是不可避免的,那么我需要对我的项目进行哪些确切的转换才能使用它。我确实尝试用最新的资产管道插件替换资源插件,如下所示:
plugins {
...
//runtime ":resources:1.2.14"
compile ":asset-pipeline:1.8.3"
...
}
但错误并没有消失。想法?
我不确定为什么您不能在 Grails 2.4.4 中使用资源插件,但我的建议是使用 asset-pipeline
,因为它比旧版本好得多resources
插件。这是一篇很好的文章,解释了为什么(来自插件的作者)以及如何:
编辑
再看一遍,我认为这可能是版本 2.3.x 中不兼容 web.xml
的问题。其中有以下内容:
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>org.codehaus.groovy.grails.web.sitemesh.GrailsPageFilter</filter-class>
</filter>
这里是link新的2.4.xweb.xml
文件:
如果您在这里使用 Grails 4.x,请查看您的 sitemesh.xml 文件。
在我的例子中,Grails 升级后文件不再需要,所以我删除了 src/main/webapp/WEB-INF/sitemesh.xml 以使用默认值。您显然希望保留此文件的备份,直到您知道是否可以用与您的项目相同的方式解决问题。