2016-03-06 8 views
5

में GroovyClassLoader का उपयोग कर मैं बहुत की तरह एक ग्रूवी स्क्रिप्ट है:हो रही कक्षा नहीं पाए गए: org.apache.ivy.core.report.ResolveReport जब जावा

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

class MyCsvParser { 

} 

और मैं अपने जावा आवेदन में इस वर्ग लोड करना चाहते हैं के माध्यम से। लेकिन @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

इस फ़ाइल अपाचे आइवी फ्रेमवर्क का हिस्सा है - http://javasearch.buggybread.com/home.php?keyword=org.apache.ivy.core .report.ResolveReport –

उत्तर

9

आपको आईवी निर्भरता जोड़नी चाहिए। इसे डिफ़ॉल्ट रूप से जोड़ा नहीं जाता है क्योंकि इसे गैर-संक्रमणीय घोषित किया जाता है। आइवी पुस्तकालय जो निर्भरता @Grab द्वारा लोड का प्रबंध करती है:

<dependency> 
    <groupId>org.apache.ivy</groupId> 
    <artifactId>ivy</artifactId> 
    <version>2.4.0</version> 
</dependency> 
संबंधित मुद्दे