Dependencies of Transitive Batik Libraries

I use Gradle to get Batik (SVG libraries) and out of the box, it lacks some transitive libraries. Which should I put?

I already tried to get xml-api or Xerces lib

Gradle:

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' } 

Java Code:

 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(); 

Runtime Error:

 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 

thanks

+5
source share
1 answer

I downloaded the batik-1.8 source code, and the missing class is part of the official source code.

I compiled libraries with ant maven-artifacts and checked all the jar files to see which one got the org.w3c.dom package . I found it in batik-ext-1.8 .

This jar is loaded by Gradle, but there is only a manifest directory; not classes. See http://central.maven.org/maven2/org/apache/xmlgraphics/batik-ext/1.8/batik-ext-1.8.jar

Thus, the gang was not built correctly when clicking on maven.

I opened the error report here: https://issues.apache.org/jira/browse/BATIK-1120

Greetings

+1
source

All Articles