解决groovy模块版本冲突
Solving groovy module version conflict
如何解决groovy模块(groovy-xml)版本冲突?
版本 2.4.12 是我当前项目所依赖的版本,但是,groovysh 以某种方式预加载了更高版本:
$ groovysh
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:111)
at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:129)
Caused by: java.lang.ExceptionInInitializerError
at org.codehaus.groovy.runtime.InvokerHelper.<clinit>(InvokerHelper.java:88)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallConstructorSite(CallSiteArray.java:82)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:263)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:277)
at org.apache.groovy.groovysh.Main.main(Main.groovy:74)
... 6 more
Caused by: groovy.lang.GroovyRuntimeException: Conflicting module versions. Module [groovy-xml is loaded in version 3.0.7 and you are trying to load version 2.4.12
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl$DefaultModuleListener.onModule(MetaClassRegistryImpl.java:510)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromProperties(ExtensionModuleScanner.java:87)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromMetaInf(ExtensionModuleScanner.java:81)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanClasspathModulesFrom(ExtensionModuleScanner.java:63)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanClasspathModules(ExtensionModuleScanner.java:55)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:125)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:86)
at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:37)
... 12 more
更多信息,这是 Mac,groovy 由 brew install groovy
安装,没有创建 GROOVY 相关环境变量:
$ env | grep GROOVY | wc
0 0 0
请注意,当您安装 groovy 时,安装程序会创建一个名为“GROOVY_HOME”的环境变量。要解决您的冲突,您应该删除 3.0.7 作为您环境中的默认版本。
编辑(见 OP 评论)
如果上述解决方案不适合您,请使用另一种方法:
编辑项目的 build.gradle
以强制 gradle 加载您合适的 groovy 版本:
configurations.all { resolutionStrategy { force 'org.codehaus.groovy:groovy-all: 2.4.12' } }
我建议使用 skdman 来管理您的 Groovy 安装,这将为您创建 GROVY_HOME env 变量,另一种方法是找到您的 groovy 安装位置并创建一个指向 Groovy 文件夹内 bin
位置的 GROVY_HOME 环境。
如何解决groovy模块(groovy-xml)版本冲突?
版本 2.4.12 是我当前项目所依赖的版本,但是,groovysh 以某种方式预加载了更高版本:
$ groovysh
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.codehaus.groovy.tools.GroovyStarter.rootLoader(GroovyStarter.java:111)
at org.codehaus.groovy.tools.GroovyStarter.main(GroovyStarter.java:129)
Caused by: java.lang.ExceptionInInitializerError
at org.codehaus.groovy.runtime.InvokerHelper.<clinit>(InvokerHelper.java:88)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallConstructorSite(CallSiteArray.java:82)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:263)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:277)
at org.apache.groovy.groovysh.Main.main(Main.groovy:74)
... 6 more
Caused by: groovy.lang.GroovyRuntimeException: Conflicting module versions. Module [groovy-xml is loaded in version 3.0.7 and you are trying to load version 2.4.12
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl$DefaultModuleListener.onModule(MetaClassRegistryImpl.java:510)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromProperties(ExtensionModuleScanner.java:87)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanExtensionModuleFromMetaInf(ExtensionModuleScanner.java:81)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanClasspathModulesFrom(ExtensionModuleScanner.java:63)
at org.codehaus.groovy.runtime.m12n.ExtensionModuleScanner.scanClasspathModules(ExtensionModuleScanner.java:55)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:125)
at org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl.<init>(MetaClassRegistryImpl.java:86)
at groovy.lang.GroovySystem.<clinit>(GroovySystem.java:37)
... 12 more
更多信息,这是 Mac,groovy 由 brew install groovy
安装,没有创建 GROOVY 相关环境变量:
$ env | grep GROOVY | wc
0 0 0
请注意,当您安装 groovy 时,安装程序会创建一个名为“GROOVY_HOME”的环境变量。要解决您的冲突,您应该删除 3.0.7 作为您环境中的默认版本。
编辑(见 OP 评论)
如果上述解决方案不适合您,请使用另一种方法:
编辑项目的 build.gradle
以强制 gradle 加载您合适的 groovy 版本:
configurations.all { resolutionStrategy { force 'org.codehaus.groovy:groovy-all: 2.4.12' } }
我建议使用 skdman 来管理您的 Groovy 安装,这将为您创建 GROVY_HOME env 变量,另一种方法是找到您的 groovy 安装位置并创建一个指向 Groovy 文件夹内 bin
位置的 GROVY_HOME 环境。