grails运行应用程序(grails 2.5.0)上的NoClassDefFoundError

grails运行应用程序(grails 2.5.0)上的NoClassDefFoundError,grails,Grails,当我尝试使用Grails 2.5.0运行新创建的项目时: $ grails create-app test250 $ cd test250 $ grails run-app 我得到以下错误: | Running Grails application | Error java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory | Error at org.grails.plugins.tomcat.fork.

当我尝试使用Grails 2.5.0运行新创建的项目时:

$ grails create-app test250
$ cd test250
$ grails run-app
我得到以下错误:

| Running Grails application
| Error java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
| Error     at org.grails.plugins.tomcat.fork.ForkedTomcatServer.<clinit>(ForkedTomcatServer.groovy:44)
| Error Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
| Error     at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
| Error     at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
| Error     at java.security.AccessController.doPrivileged(Native Method)
| Error     at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
| Error     at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
| Error     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
| Error     at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
| Error     ... 1 more
Exception in thread "main" 
| Error Forked Grails VM exited with error
|运行Grails应用程序
|错误java.lang.NoClassDefFoundError:org/apache/commons/logging/LogFactory
|错误位于org.grails.plugins.tomcat.fork.ForkedTomcatServer。(ForkedTomcatServer.groovy:44)
|由以下原因导致的错误:java.lang.ClassNotFoundException:org.apache.commons.logging.LogFactory
|java.net.URLClassLoader$1.run处出错(URLClassLoader.java:366)
|java.net.URLClassLoader$1.run处出错(URLClassLoader.java:355)
|java.security.AccessController.doPrivileged(本机方法)处出错
|java.net.URLClassLoader.findClass(URLClassLoader.java:354)处出错
|java.lang.ClassLoader.loadClass(ClassLoader.java:423)处出错
|sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)处出错
|java.lang.ClassLoader.loadClass(ClassLoader.java:356)处出错
|错误。。。还有一个
线程“main”中出现异常
|错误分叉Grails VM已退出,出现错误

我的机器正在运行OSX 10.10.2,我有几个项目在Grails 2.2.5上运行没有问题。

问题似乎在于Tomcat插件间接使用了commons日志(
ForkedTomcatServer
扩展了Grails
forkedRailsProcess
类,该类引用了
org.apache.commons.logging.Log
),但它没有导出,也不是Grails依赖项


它是资产管道插件的一个间接依赖项,因此对于大多数用户来说,jar应该是可用的,并且可以解决这个bug。您是否在BuildConfig.groovy中将资产管道作为一个依赖插件删除了

通过在BuildConfig.groovy中显式添加对commons日志的依赖项,您应该能够使事情正常进行:

dependencies {
   runtime 'commons-logging:commons-logging:1.2'
   ...
}

这个问题是通过使用(正如杰夫所指出的那样)解决的管理安装在我的计算机上的不同Grails版本。

我无法重现此问题。我将验证Grails\u HOME是否指向正确的未损坏安装,以及$Grails\u HOME/bin是否位于可能包含Grails可执行文件的任何其他位置前面的路径上。如果无法解决此问题,请提交issue at.谢谢。我使用gvm管理Grails,但我没有发现问题。我刚刚使用at命令测试发行版,也没有发现问题。Grails_HOME指向一个新的安装,它是PATH变量中唯一的一个安装。谢谢。它对我来说还没有意义,我还无法复制它。我相信它正在发生,我只是不知道如何让它发生。如果你在上提交问题,我们可以跟踪它,也许我们可以确定它。感谢你的反馈。作为记录,当我将BuildConfig上的依赖项解析程序从maven更改为ivy时,错误更改为:| error 2015-03-31 17:40:34812[localhost-startStop-1]错误context.ContextLoader-上下文初始化失败消息:org/springframework/expression/ParserContext Line | Method->>800 |在java.lang.ClassLoader中定义类…”“您是否在BuildConfig.groovy中删除了作为依赖插件的资产管道?”-他的描述说,他运行了创建应用程序,然后运行了运行应用程序。如果在这些步骤之间有BuildConfig.groovy的编辑,那么有几种方法可能会导致这个问题。我想知道是否发生了这种情况。正如Jeff所说,在创建应用程序之后,我没有碰过应用程序。即使在显式添加我所做的唯一“不同”的事情是将JAVA_HOME(和PATH)设置为1.7.0_21版本的安装,以删除此警告:objc[37872]:类JavaLaunchHelper在/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/bin/Java和/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home/jre/libinstr中实现‌​将使用其中一个。哪一个未定义。