2017-09-12 102 views
0

我正在嘗試將grails項目從grails 1.1.1升級到grails 1.2.1。 當我試圖運行我的應用程序我得到如下錯誤信息:upgarding grails 1.1.1至1.2.1

I am using java 1.7._09 and GGTS 3.6.4. 

這是我的application.properties文件:

when I am trying to add tomcat 1.2.1 in my application.properties file I am getting below error: 

我GGTS使用的是默認Groovy編譯2.3。我是否需要改變groovy編譯器?

我已經在谷歌搜索,但我不明白: search result from google

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:266) 
    at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:51) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:44) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:143) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:155) 
    at gant.Gant.processTargets(Gant.groovy:480) 
    at org.codehaus.groovy.grails.cli.GrailsScriptRunner.callPluginOrGrailsScript(GrailsScriptRunner.java:485) 
    at org.codehaus.groovy.grails.cli.GrailsScriptRunner.executeCommand(GrailsScriptRunner.java:301) 
    at org.codehaus.groovy.grails.cli.GrailsScriptRunner.main(GrailsScriptRunner.java:115) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at org.codehaus.groovy.grails.cli.support.GrailsStarter.rootLoader(GrailsStarter.java:215) 
    at org.codehaus.groovy.grails.cli.support.GrailsStarter.main(GrailsStarter.java:240) 
Caused by: java.lang.IllegalArgumentException: addChild: Child name 'grails-errorhandler' is not unique 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:781) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) 
    at org.apache.catalina.core.StandardContext.addChild(StandardContext.java:2128) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at org.apache.tomcat.util.IntrospectionUtils.callMethod1(IntrospectionUtils.java:925) 
    at org.apache.tomcat.util.digester.SetNextRule.end(SetNextRule.java:193) 
    at org.apache.tomcat.util.digester.Rule.end(Rule.java:229) 
    at org.apache.tomcat.util.digester.Digester.endElement(Digester.java:1140) 
    ... 438 more 
startup.ContextConfig Occurred at line 7 column 422 
startup.ContextConfig Marking this application unavailable due to previous error(s) 
core.StandardContext Error getConfigured 
core.StandardContext Context [/BASF_bdw] startup failed due to previous errors 
Server running. Browse to http://localhost:8080/BASF_bdw 
plugins.DefaultGrailsPluginManager Started to scan for plugin changes in every 5000ms. 

我在.grails發現的重複servlet名稱/ *** /資源/ web.xml文件在運行運行的應用程序命令在GGTS。

<servlet> 
<servlet-name>grails-errorhandler</servlet-name> 
<servlet-class>org.codehaus.groovy.grails.web.servlet.ErrorHandlingServlet</servlet-class> 
</servlet> 
<servlet> 
<servlet-name>grails-errorhandler</servlet-name> 
<servlet-class>org.codehaus.groovy.grails.web.servlet.ErrorHandlingServlet</servlet-class> 
</servlet> 

我可以知道它爲什麼會生成重複的servlet名稱以及如何解決這個問題?

+0

谷歌搜索結果:http://blog.proxerd.pl/article/how-to -fix-incompatibleclasschangeerror-for-your-groovy-projects-running-on-jdk7 –

+0

你剛發明了時間機器! – injecteer

+0

對不起,我沒有給你 –

回答

0

博客表示,您應該搜索擴展類Exception或其子類並將其從常規轉換爲Java類的每個類。但是,它看起來不是你的代碼,而是引發異常的內部Grails代碼。

看看您以前的問題,看起來您的最終目標是讓您的戰爭在Java 7環境中運行。 在升級過程中,您應該堅持使用Java 6,直到您遇到只運行於Java 7的Grails版本。 每次成功升級後,使用Java 6編譯您的項目並嘗試在運行於Java上的servlet容器中運行它7.也許你是幸運的,它只是起作用。

我很確定這不會是最後一個問題。 我不知道你的項目有多少行代碼,也許這是一個選項來重新實現grails 3中的整個項目。

+0

當我試圖將java版本更改爲1.6時,我得到「Unsupported major. minor version 51.0」。在系統變量和GGTS屬性中,我已將編譯器從1.7更改爲1.6。 另一個奇怪的是我已經將tomcat版本2.1.1更改爲1.2.1,然後我得到「由於:java.lang.IllegalArgumentException:addChild:子名稱'grails-errorhandler'不是唯一的」。我檢查了.grails文件夾中的web.xml文件,發現了兩個名爲'grails-errorhandler'的servlet。爲什麼在運行應用程序時產生重複以及如何解決這個問題? –

+0

這是升級的痛苦。我沒有足夠的經驗來升級到1.2 :)。我可以給你的一些提示:如果出現錯誤,請嘗試'grails clean'。有時需要刪除或更好地備份緩存目錄。閱讀並遵循升級說明http://docs.grails.org/1.3.9/guide/2.%20Getting%20Started.html#2.2%20Upgrading%20from%20previous%20versions%20of%20Grails。用新的Grails版本創建一個新的Grails項目,並比較application.properties,Config.groovy和BuildConfig.groovy設置。嘗試'grails升級'。 – andi

+0

請不要將原來問題的內容編輯到下一個問題。雖然我認爲這個問題在2017年不會對任何人有所幫助,但是對於新問題同樣存在問題的人並不會看到與前一主題的答案有關。反正我錯了。錯誤的來源是tomcat插件的版本與Grails的版本不同。我忘記了它在較老的Grails版本中以這種方式工作。 – andi