在Java中使用GroovyClassLoader时,找不到类:org.apache.ivy.core.report.ResolveReport

KIC*_*KIC 12 java groovy

我有一个像这样的groovy脚本:

@Grab('com.univocity:univocity-parsers:2.0.0')
import com.univocity.parsers.csv.*;

class MyCsvParser {

}
Run Code Online (Sandbox Code Playgroud)

我想通过我的java应用程序加载这个类GroovyClassLoader.但以@Grab某种方式产生常春藤例外:

SomeJavaClass {
    void someMethod() {
         String script = FileUtils.readFileToString("the groovy File");
         Class c = new GroovyClassLoader(this.getClass().getClassLoader())).parse(script);
    }
}
Run Code Online (Sandbox Code Playgroud)

堆:

Caused by: java.lang.ClassNotFoundException: org.apache.ivy.core.report.ResolveReport
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 41 more
Run Code Online (Sandbox Code Playgroud)

当我发表评论时,@Grab一切正常.如何启用Grapes GroovyClassLoader

Jér*_*e B 20

你应该添加常春藤依赖.默认情况下不会添加它,因为它被声明为非传递性的.Ivy是管理由@Grab以下内容加载的依赖项的库:

<dependency>
  <groupId>org.apache.ivy</groupId>
  <artifactId>ivy</artifactId>
  <version>2.4.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

  • 将这个依赖添加到什么? (7认同)