2016-03-06 8 views
5

でGroovyClassLoaderを使用したとき、私はGroovyのスクリプトそうのようにあります。はクラスが見つかりませんガイド:org.apache.ivy.core.report.ResolveReport Javaの

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

class MyCsvParser { 

} 

そして私は私のJavaアプリケーションでこのクラスをロードしたいですGroovyClassLoaderを介してしかし@Grabは何とかツタ例外で得られます。

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

スタック:

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 

私がコメントアウトした場合@Grabすべてがうまく動作します。どのようにしてGroovyClassLoaderのブドウを有効にすることができますか?

+0

このファイルには、ApacheアイビーFrameworkの一部である - http://javasearch.buggybread.com/home.php?keyword=org.apache.ivy.core .report.ResolveReport –

答えて

9

ivy依存関係を追加する必要があります。これは非推移的であると宣言されているため、デフォルトでは追加されません。アイビーは@Grabによって読み込まれた依存関係を管理するライブラリです:

<dependency> 
    <groupId>org.apache.ivy</groupId> 
    <artifactId>ivy</artifactId> 
    <version>2.4.0</version> 
</dependency> 
関連する問題