Grails 2,run-war - > java.lang.ClassNotFoundException:grails.test.mixin.services.ServiceUnitTestMixin

时间:2011-12-24 18:04:54

标签: grails war tomcat7 classnotfoundexception grails-2.0

获得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;

...我们非常感谢任何反馈意见。

4 个答案:

答案 0 :(得分:3)

我遇到了类似的问题,并按顺序执行以下操作解决了这个问题:

  1. 删除目标目录中的所有内容
  2. grails clean
  3. grails compile
  4. grails run-war

答案 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文件并且启动就好了。