获得Grails 2应用程序并执行run-app工作正常,run-war失败:
2011-12-24 12:43:40,996 [Thread-2] ERROR context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'pluginManager' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: Lgrails/test/mixin/services/ServiceUnitTestMixin;
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NoClassDefFoundError: Lgrails/test/mixin/services/ServiceUnitTestMixin;
at java.lang.Class.privateGetDeclaredFields(Class.java:2291)
at java.lang.Class.getDeclaredField(Class.java:1880)
... 5 more
Caused by: java.lang.ClassNotFoundException: grails.test.mixin.services.ServiceUnitTestMixin
... 7 more
在使用Grails 2完美无瑕的经验后,遇到这个问题,
这对我来说是一个完整的头脑风暴:
java.lang.NoClassDefFoundError: Lgrails/test/mixin/services/ServiceUnitTestMixin;
...我们非常感谢任何反馈意见。
答案 0 :(得分:3)
我遇到了类似的问题,并按顺序执行以下操作解决了这个问题:
答案 1 :(得分:3)
我有完全相同的问题,并且接受的答案对我不起作用,所以我潜水了一点......
我发现的是一个MyServiceTests
课,它以某种方式设法从grails-app/test/unit/
偷偷潜入grails-app/services/
;可能在某种程序包重命名重构期间。将MyServiceTests
移回测试/单元后,一切都恢复正常。
答案 2 :(得分:1)
控制器的包名必须与域类的包名匹配。确保您的软件包名称在整个项目中保持一致,包括软件包名称中的大小写。有些IDE在更新整个项目中的意外拼写错误时并不一致。
答案 3 :(得分:1)
我和johanneslink有类似的情况。
应用程序无法在Tomcat中启动。检查catalina.out显示由grails.test.mixin.services.ServiceUnitTestMixin引起的ClassNotFoundException
我使用grep在整个应用程序文件夹中查找所有出现的'ServiceUnitTestMixin'(从grails-app的父文件开始)。我发现不知何故我将grails.test.mixin.Mock导入了Controller。
一旦我删除了它并清理/编译了它部署的war文件并且启动就好了。