2015-05-27 3 views
5

मैं बैटिक (एक एसवीजी लाइब्रेरी) प्राप्त करने के लिए ग्रैडल का उपयोग कर रहा हूं और बॉक्स से बाहर, इसमें कुछ संक्रमणीय पुस्तकालय गायब हैं। मुझे कौन सा रखना चाहिए?बटिक संक्रमणीय पुस्तकालय निर्भरता

version = 1.0 
mainClassName = 'com.foilen.svgexporter.SvgExporter' 

sourceCompatibility = '1.8' 
targetCompatibility = '1.8' 

dependencies { 
    compile 'args4j:args4j:2.32' 
    compile 'org.apache.xmlgraphics:batik-rasterizer:1.8' 
} 

जावा कोड:

PNGTranscoder transcoder = new PNGTranscoder(); 
InputStream in = new FileInputStream("character_man_black.svg"); 
TranscoderInput input = new TranscoderInput(in); 
OutputStream ostream = new FileOutputStream("character_man_black.png"); 
TranscoderOutput output = new TranscoderOutput(ostream); 
transcoder.transcode(input, output); 

// Flush and close the output. 
ostream.flush(); 
ostream.close(); 
in.close(); 

निष्पादन त्रुटि:

Exception in thread "main" java.lang.NoClassDefFoundError: org/w3c/dom/ElementTraversal 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:455) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:367) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at org.apache.batik.anim.dom.SVGDOMImplementation.createDocument(Unknown Source) 
    at org.apache.batik.dom.util.SAXDocumentFactory.startElement(Unknown Source) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:509) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:379) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:605) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3138) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:880) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606) 
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117) 
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848) 
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) 
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) 
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) 
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649) 
    at org.apache.batik.dom.util.SAXDocumentFactory.createDocument(Unknown Source) 
    at org.apache.batik.dom.util.SAXDocumentFactory.createDocument(Unknown Source) 
    at org.apache.batik.anim.dom.SAXSVGDocumentFactory.createDocument(Unknown Source) 
    at org.apache.batik.anim.dom.SAXSVGDocumentFactory.createDocument(Unknown Source) 
    at org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(Unknown Source) 
    at org.apache.batik.transcoder.SVGAbstractTranscoder.transcode(Unknown Source) 
    at com.foilen.svgexporter.SvgExporter.main(SvgExporter.java:66) 
Caused by: java.lang.ClassNotFoundException: org.w3c.dom.ElementTraversal 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:372) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:360) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 34 more 

धन्यवाद

मैं पहले से ही एक्सएमएल-api या Xerces lib

Gradle प्राप्त करने की कोशिश

उत्तर

1

मैंने batik-1.8 का स्रोत कोड डाउनलोड किया और गायब वर्ग आधिकारिक स्रोत कोड का हिस्सा है।

मैंने ant maven-artifacts के साथ पुस्तकालयों को संकलित किया और सभी जार फ़ाइलों को चेक किया ताकि यह देखने के लिए कि org.w3c.dom package कौन सा है। मुझे इसे batik-ext-1.8 में मिला।

यह जार ग्रैडल द्वारा डाउनलोड किया जा रहा है, लेकिन वहां केवल एक मैनिफेस्ट निर्देशिका है; वर्ग नहीं देखें http://central.maven.org/maven2/org/apache/xmlgraphics/batik-ext/1.8/batik-ext-1.8.jar

तो जब जार को धक्का दिया गया तो जार सही ढंग से नहीं बनाया गया था। https://issues.apache.org/jira/browse/BATIK-1120

चीयर्स

+0

इस के वैकल्पिक हल क्या है:

मैं एक बग रिपोर्ट यहां खोला? –

+0

कामकाज की कोई ज़रूरत नहीं: उन्होंने इसे ठीक किया (यहां तक ​​कि सोचा कि जिरा अभी भी "खुला" है) –

+1

रिपोर्ट के एक साल बाद भ्रष्ट पुस्तकालय अभी भी मेवेन में उपलब्ध है। यह तब तक तय नहीं है जब तक इसे वितरित नहीं किया जाता है। – tptak

संबंधित मुद्दे