2013-05-29 72 views
4

我將我的應用程序從Grails 2.1遷移到2.3。 遷移後我收到很多錯誤 - 我想要一些使用Grails 2.3和Spring集成的示例應用程序。如何將Grails 2.1遷移到Grails 2.3應用程序

我做了一些HelloWorld示例應用程序,這些工作正常。但即使我在我的應用程序中應用相同的東西,甚至在某些地方出現錯誤。因爲我的應用程序非常大(100mb),並且我使用了很多與Spring,hibernate ......以及很多Grails插件的集成。

我沒有找到任何代碼級別的文檔「從Grails 2.1遷移到Grails 2.3」。

我無法從Grails或在線找到任何示例應用程序。

Grails官方文檔,全部關於提供Grails META信息。

請幫我.............

我main.gsp

229線:

<g:include controller="filter" action="tree"/> 

Caused by: org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error processing GroovyPageView: Error executing tag <g:include>: Unable to execute include: Request processing failed; nested exception is org.codehaus.groovy.grails.exceptions.GrailsRuntimeException: java.lang.IllegalStateException: Cannot reset buffer after response has been committed 
    at org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.createGroovyPageException(GroovyPageView.java:205) 
    at org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.handleException(GroovyPageView.java:182) 
    at org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.renderWithTemplateEngine(GroovyPageView.java:153) 
    at org.codehaus.groovy.grails.web.servlet.view.GroovyPageView.renderMergedOutputModel(GroovyPageView.java:84) 
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:264) 
    at org.codehaus.groovy.grails.web.sitemesh.SpringMVCViewDecorator.render(SpringMVCViewDecorator.java:67) 
    ... 51 more 
Caused by: org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException: Error executing tag <g:include>: Unable to execute include: Request processing failed; nested exception is org.codehaus.groovy.grails.exceptions.GrailsRuntimeException: java.lang.IllegalStateException: Cannot reset buffer after response has been committed 
    at org.codehaus.groovy.grails.web.pages.GroovyPage.throwRootCause(GroovyPage.java:531) 
    at org.codehaus.groovy.grails.web.pages.GroovyPage.invokeTag(GroovyPage.java:475) 
    at sun.reflect.GeneratedMethodAccessor379.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1243) 
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) 
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) 
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1085) 
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110) 
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:909) 
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:989) 
    at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110) 
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:909) 
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:66) 
    at mycompany_dev_testuserdev_ws3_myapp_grails_app_views_layouts_main_gsp$_run_closure2.doCall(main.gsp:229) 
+1

提供錯誤的詳細信息 –

回答

5

您的Config.groovy和BuildConfig.groovy文件進行比較,以一個空的新Grails 2.3應用程序的默認值。

最顯着的變化是不應該在application.properties中描述插件依賴關係。您還應該確保您使用的是正確版本的Grails Tomcat,Hibernate和Scaffolding插件。 Tomcat & Hibernate插件版本不再與Grails發佈版本相同。在Grails 2.3中已經提取腳手架功能來分離插件。 確保你使用正確的插件範圍(爲tomcat構建,運行時爲休眠)。

還建議開始使用基於新的maven(使用屬於maven的aether庫)依賴性解析。這是通過BuildConfig.groovy中的設置grails.project.dependency.resolver = "maven"完成的。在Grails 2.3中,我遇到了古老的基於ivy的解析器的奇怪類加載問題。

我希望這會有所幫助。

+0

我刪除 「包括」 從main.gsp聲明。我得到了一些像這樣的其他錯誤: – Sun

+0

我發現[在我的web應用程序中從春天獲取'沒有線程綁定的請求發現'錯誤](http://stackoverflow.com/questions/2039522/getting-a-無線程綁定請求發現錯誤從春天在我的網絡應用程序)一些事情類似的問題。但它不在Grails的背景下。我嘗試了這種方式,但它給了一些其他錯誤,如:'ClassCastException:org.springframework.web.context.request.ServletRequestAttributes不能轉換爲org.codehaus.groovy.grails.web.servlet.mvc.GrailsWebRequest' – Sun

+0

某些插件可能拉着一個老版本的Spring。我有rabbitmq插件的問題。請檢查war文件的依賴關係報告和WEB-INF/lib。 –

3

它非常簡單遷移的Grails 2.3 - (我的情況下,我使用的常春藤,POM Grails中2.1.4)

  1. 做一個樣本項目並運行 - 確認工作。保留作爲參考。
  2. 在您的項目中,將所有jar和插件從pom移到BuildConfig,沒有像往常一樣已知的新格式。 (注意:不要錯過任何一個jar或插件,這需要幾天的時間才能意識到,我做了相同的錯誤花費1天半)
  3. 並且將SampleProject - > BuildConfig中的JAR和插件配置複製到您的項目BuildConfig,如果您的應用程序中也有相同的罐子,請檢查並刪除舊版本並保留最新版本。
  4. 副本後這BuildConfig
forkConfig = [maxMemory: 1024, minMemory: 64, debug: false, maxPerm: 256] 
grails.project.fork = [ 
    test: forkConfig, // configure settings for the test-app JVM 
    run: forkConfig, // configure settings for the run-app JVM 
    war: forkConfig, // configure settings for the run-war JVM 
    console: forkConfig // configure settings for the Swing console JVM 
] 

grails.project.dependency.resolver = "maven" // or ivy 
grails.project.dependency.resolution = { 
  1. 運行Grails upgrade
  2. 運行Grails run-app
相關問題