2017-09-12 100 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