【发布时间】:2015-10-06 23:06:15
【问题描述】:
我有一个使用 groovy 版本 2.2.1 的 groovy 应用程序。我的 groovy 应用程序之前运行良好,但最近开始抛出此异常:
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
at com.app.Main.main(Main.groovy:83)Caused by: java.lang.ClassNotFoundException: org.codehaus.groovy.runtime.typehandling.ShortTypeHandling
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
直到 groovy 2.3.0 才引入 ShortTypeHandling 类。如何在运行 2.2.1 版的 groovy 应用程序中引用它?我可以通过在我的 pom 中用 groovy-all-2.3.0.jar 替换 groovy-all-2.2.1.jar 来解决这个问题,但这并不是问题的根源。
【问题讨论】:
-
我刚开始使用 Grails 2.4,它使用 groovy 2.3.0,当我将项目转移到使用 Maven 插件时遇到了 ShortTypeHandling ClassNotFoundException。这也是我第一次遇到这个问题,我还没有完全确定来源。我怀疑 groovy 2.3.0 可能是通过您的插件依赖项之一进入的?您最近是否添加了新的或升级了一个?你用的是什么版本的maven插件?
-
我认为它必须是一个 mvn 依赖项,它也引入了 groovy-all-2.3.0 jar。我在整个 pom 上做了一个 mvn 依赖树(mvn dependency:tree -Dverbose),没有看到任何对 groovy 2.3.0 的引用。最后一件事,该应用程序在 Intellj 中运行时运行良好(它没有 groovy 2.3.0 依赖项)。只有当我通过 mvn 命令行编译/打包/运行时,问题才会出现。
-
对不起,你问的是版本,我使用的是 groovy-eclipse-compiler v2.7.0。自应用停止工作以来唯一添加的新插件是测试代码覆盖率插件 cobertura-maven-plugin v2.6
标签: groovy