20

将 Grails 应用程序从 2.2.0 升级到 2.2.1 后,尝试通过 Debug as... -> Grails Command (run-app) 从 GGTS 调试 Grails 应用程序时,我不断收到以下错误:

Error starting Grails: nulljava.lang.ExceptionInInitializerError
at org.codehaus.groovy.runtime.InvokerHelper.<clinit>(InvokerHelper.java:62)
at groovy.lang.GroovyObjectSupport.<init>(GroovyObjectSupport.java:32)
at groovy.lang.Closure.<init>(Closure.java:221)
at groovy.lang.Closure.<init>(Closure.java:238)
at groovy.lang.Closure$1.<init>(Closure.java:205)
at groovy.lang.Closure.<clinit>(Closure.java:205)
at org.codehaus.groovy.grails.cli.GrailsScriptRunner.<clinit>(GrailsScriptRunner.java:84)
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.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1243)
at org.codehaus.groovy.grails.cli.support.GrailsStarter.rootLoader(GrailsStarter.java:234)
at org.codehaus.groovy.grails.cli.support.GrailsStarter.main(GrailsStarter.java:262)
Caused by: groovy.lang.GroovyRuntimeException: Conflicting module versions. Module [groovy-all is loaded in version 2.0.5 and you are trying to load version 2.0.7
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.registerExtensionModuleFromProperties(MetaClassRegistryImpl.java:186)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.registerExtensionModuleFromMetaInf(MetaClassRegistryImpl.java:174)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.registerClasspathModules(MetaClassRegistryImpl.java:156)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:111)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:73)
at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:33)
... 14 more

我正在使用 Groovy Compiler 2.0 Feature 2.7.1.xx-20120921-2000-e42RELEASE 和 Groovy/Grails Tool Suite 3.1.0.201210061306-RELEASE-e42 运行 GGTS 3.1.0.RELEASE。该项目已配置 Groovy 编译器级别 2.0。Eclipse 首选项说“您当前使用的是 Groovy 编译器版本 2.0.4.xx-20120921-2000-e42RELEASE”。

有什么提示吗?

4

16 回答 16

30

我在 Ubuntu 机器上的 Grails 2.2.0 上遇到了这个问题,我通过以下步骤修复了它:

  1. 打开 Eclipse 转到“运行为”“运行配置”
  2. 选择“环境”选项卡,然后选择“用指定环境替换本机环境”

为我解决了这个问题..希望这有帮助

于 2013-12-25T14:15:24.420 回答
28

我遇到了同样的问题,我从 GGTS 中选择了 groovy-all 2.0.7,从我的 grails 项目中选择了 2.0.8。为了解决这个问题,我从 eclipse 项目中删除了“Groovy Dependencies”库。

右键单击项目-> 属性-> Java 构建路径-> 库(选项卡)-> Groovy 依赖项-> 删除

于 2013-09-16T07:33:50.617 回答
10

手动删除 run-app 运行配置,以便重新创建它。这在 2013 年 8 月 1 日被报告为错误。错误报告:https ://issuetracker.springsource.com/browse/STS-3501

于 2014-01-12T01:45:18.393 回答
5

我删除了 GGTS 工作区中的 .metadata 并重新导入项目。它有效,我可以再次运行应用程序。

于 2013-06-13T01:52:02.677 回答
2

我遇到了同样的问题,我通过以下方式解决了它:

  1. 对于您的项目:打开运行方式->运行配置
  2. 转到刷新选项卡
  3. 完成后检查刷新资源
  4. 运行

这对我有用。

于 2014-01-31T15:19:26.810 回答
1

我通过删除在运行配置中手动加载类路径的选项来解决它。它使用了错误的 Grails 版本(2.5.0 而不是 2.5.1)。

基本上使用了错误的类路径。

也许这会让某人走上正确的道路:)

于 2015-10-15T08:27:25.393 回答
1

我有同样的例外,当我试图仅在 Eclipse 中对我的 Spring 引导项目运行 JUnit 测试时,mvn 可以很好地执行它们。我没有使用Gradle 或 Groovy。确实在调试时检查测试的类路径,显示了两个版本的 groovy.jar。groovy.jar 的工作版本是从 Eclipse 工作区中的其他项目中挑选出来的。我能够通过从项目属性中的 Workspace 项目中删除Resolve 依赖项来修复它- > Maven 解决来自 Workspace 项目的依赖关系

于 2017-03-07T13:49:21.833 回答
0

我没有解释为什么它不起作用,但我找到了解决方法。

我为同一个应用程序配置了另一个运行目标,但有一个-Dgrails.env=...设置,我可以毫无问题地启动它。我只是复制了这个配置并删除了参数。这样,我基本上重新创建了以前一直失败的简单启动配置。

问题消失了。

于 2013-02-27T00:16:29.930 回答
0

对我来说,从 grails 命令窗口编译就可以了

于 2013-03-22T08:40:14.743 回答
0

通过 eclipse 运行它时我遇到了同样的问题,对我有用的是进行以下更改 Go to Project properties -> Groovy Compiler ->configure workspace settings 。取消选中复选框“启用检查项目和工作区 groovy 编译器级别之间的不匹配”

于 2013-03-22T23:55:03.933 回答
0

当我更改 grails 项目的名称时,它可以正常工作。

于 2013-05-15T22:09:46.757 回答
0

当 Eclipse 停止运行我的项目并出现“groovy-all 已加载版本......并且您正在尝试加载版本”错误时,另一个解决方案对我有用。

从 .classpath 中手动删除 groovy-all 行已修复它。

<classpathentry kind="lib" path="Libraries/groovy-all-2.1.2.jar"/>

在这篇博文中找到了解决方案。

于 2015-09-19T19:34:11.433 回答
0

我遇到了同样的问题,我去了Project properties -> Groovy Compiler ->configure workspace settings并单击了与错误消息中两个版本之一相对应的“切换到”按钮。我希望这个能帮上忙

于 2015-09-30T12:49:39.397 回答
0

我知道这是一个 GGTS 问题,但谷歌把我带到了这里,即使几年后这似乎也是一个常见问题,所以我在这里发布这个答案。希望它可以帮助同样登陆这里的其他 STS 用户。

我在使用 Spring Boot 版本 1.3.3.RELEASE 和 gradle 版本 2.14 时遇到了 Spring Tool Suite 的这个问题。对 groovy 2.4.6 和 groovy-all 2.4.6 有一些内部依赖,但我的 Eclipse 工作区 Groovy 库是 2.4.7 版。从 Spring/Gradle 项目属性中删除 Groovy 库适用于运行这些项目,但对于工作区中的其他 Groovy 项目,您将陷入困境。如果在“项目中存在错误。仍然运行?”时单击“是”,它们将运行。如果您从属性构建路径中删除 Groovy 库,或者如果您将 Groovy 库放在属性构建路径中,它们将不会出现项目错误。

通过在工作区中的 Gradle 项目的 groovy 2.4.7 和 groovy-all 2.4.7 上的 build.gradle 中添加显式依赖项来解决

compile('org.codehaus.groovy:groovy:2.4.7')
compile('org.codehaus.groovy:groovy-all:2.4.7')

和(关闭 Eclipse STS)然后从 .gradle 缓存中删除 2.4.6 文件夹

<path to>\.gradle\caches\modules-2\files-2.1\org.codehaus.groovy\groovy\2.4.6
<path to>\.gradle\caches\modules-2\files-2.1\org.codehaus.groovy\groovy-all\2.4.6

和(打开 STS)然后右键单击 gradle project(s)>gradle>refresh gradle project

现在工作区中的其他 Groovy 项目运行时不会出现 2.4.6 与 2.4.7 的冲突。

于 2017-01-12T18:01:13.673 回答
0

使用 mvn denpendency:tree 检查您的依赖关系,可能存在版本冲突。

于 2017-06-30T09:36:34.767 回答
0

目前(使用 Eclipse 2020-06, 4.16.0)以上解决方案都不再起作用。

  1. 打开 groovy 脚本的运行配置
  2. 从 Classpath 选项卡中删除所有用户条目
  3. 按“恢复默认条目”

这应该将包含您指定的 Groovy 版本的默认类路径添加为用户条目。

于 2020-08-04T12:32:10.560 回答