2016-03-06 21 views
5

yılında GroovyClassLoader kullanırken gelenekselleşmiş bir senaryo şöyle var:Sınıf Bulunamadı Başlarken: org.apache.ivy.core.report.ResolveReport Java

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

class MyCsvParser { 

} 

Ve ben java uygulamasında bu sınıfı yüklemek istediğiniz GroovyClassLoader aracılığıyla. Ama @Grab nasılsa bir sarmaşık istisna verir:

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

Stack: Dışarı açıklama yaparken

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 her şey iyi çalışıyor. Üzümleri GroovyClassLoader'da nasıl etkinleştirebilirim?

+0

Bu dosya Apache Ivy Framework parçasıdır - http://javasearch.buggybread.com/home.php?keyword=org.apache.ivy.core .report.ResolveReport –

cevap

9

Sarmaşık bağımlılığını eklemelisiniz. Geçişsiz olarak bildirildiği için varsayılan olarak eklenmez. Ivy bağımlılıkları @Grab tarafından yüklenen yönetir kütüphanesidir:

<dependency> 
    <groupId>org.apache.ivy</groupId> 
    <artifactId>ivy</artifactId> 
    <version>2.4.0</version> 
</dependency>