[更新]
显然,我不是唯一遇到此问题的人-http://grails.1312388.n4.nabble.com/Beginner-ERROR-Failed-to-invoke-Servlet-2-5-getContextPath-method-td2222279.html。它也出现在Windows机器和OS X的Netbeans IDE中。
在这一点上,让我特别困惑的是,我可以在Eclipse内很好地运行Grails应用程序,但是第二个尝试从它们轰炸的终端运行它们。据我所知,它们都在grails-core目录中运行,那么为什么要在Eclipse中而不是在Terminal中运行呢?
[/更新]
我正在尝试在Snow Leopard机器上安装Grails。我遵循了所有grails.com的安装说明,并尝试从Dave Klein撰写的Grails:快速入门指南中启动应用程序。我运行grails create-app TekDays
时没有任何明显的问题,并且能够将其CD到TekDays文件夹,但是当我尝试运行grails run-app
时,我得到以下信息:
欢迎使用Grails 1.3.1-http://grails.org/
根据Apache Standard License 2.0许可
Grails主页设置为:/ grails
基本目录:/ apps / TekDays
解决依赖性...
依赖性在4469毫秒内解决。
运行脚本/grails/scripts/RunApp.groovy
发展环境
[删除]删除目录/Users/name/.grails/1.3.1/projects/TekDays/tomcat
正在运行Grails应用程序。
2010-05-24 21:42:39,559 [main]错误context.GrailsContextLoader-执行 bootstrap 时出错:无法调用Servlet 2.5 getContextPath方法
java.lang.IllegalStateException:无法调用Servlet 2.5的getContextPath方法
在org.grails.tomcat.TomcatServer.start(TomcatServer.groovy:164)
在grails.web.container.EmbeddableServer $ start.call(未知来源)
在_GrailsRun_groovy $ _run_closure5_closure12.doCall(_GrailsRun_groovy:159)
在_GrailsRun_groovy $ _run_closure5_closure12.doCall(_GrailsRun_groovy)
在_GrailsSettings_groovy $ _run_closure10.doCall(_GrailsSettings_groovy:282)
在_GrailsSettings_groovy $ _run_closure10.call(_GrailsSettings_groovy)
在_GrailsRun_groovy $ _run_closure5.doCall(_GrailsRun_groovy:150)
在_GrailsRun_groovy $ _run_closure5.call(_GrailsRun_groovy)
在_GrailsRun_groovy.runInline(_GrailsRun_groovy:116)
在_GrailsRun_groovy.this $ 4 $ runInline(_GrailsRun_groovy)
在_GrailsRun_groovy $ _run_closure1.doCall(_GrailsRun_groovy:59)
在RunApp $ _run_closure1.doCall(RunApp.groovy:33)
在gant.Gant $ _dispatch_closure5.doCall(Gant.groovy:381)
在gant.Gant $ _dispatch_closure7.doCall(Gant.groovy:415)
在gant.Gant $ _dispatch_closure7.doCall(Gant.groovy)
在gant.Gant.withBuildListeners(Gant.groovy:427)
在gant.Gant.this $ 2 $ withBuildListeners(Gant.groovy)
at gant.Gant $ this $ 2 $ withBuildListeners.callCurrent(未知来源)
在gant.Gant.dispatch(Gant.groovy:415)
在gant.Gant.this $ 2 $ dispatch(Gant.groovy)
在gant.Gant.invokeMethod(Gant.groovy)
在gant.Gant.executeTargets(Gant.groovy:590)
在gant.Gant.executeTargets(Gant.groovy:589)
引起原因:java.lang.NoSuchMethodException:javax.servlet.ServletContext.getContextPath()
在java.lang.Class.getMethod(Class.java:1605)
...另外23个
我已经搜索了所有我能想到的“无法调用Servlet 2.5”的派生词,但是到目前为止,找不到任何可以帮助我理解但仍然无法解决错误的内容。
任何帮助我解决此问题的建议将不胜感激!
最佳答案
我知道我参加聚会有点晚了,但是我能够在我的机器上解决这个问题,并认为我会分享我的结果,以防万一其他人在Google上偶然发现这个问题。
较新版本的Grails(1.3.7)包含groovy库,因此您无需在项目中引用groovy jar。当我从IntelliJ 10降级到9时,我错误地将引用添加到Groovy,以为我需要它。 java.lang.NoSuchMethodError: javax.servlet.ServletContext.getContextPath()
的一种解释是,您要包括已声明方法的库,这似乎是我遇到的问题。
希望这对别人有帮助!