2015-05-27 22 views
5

Tôi đang sử dụng Gradle để lấy Batik (thư viện SVG) và ra khỏi hộp, thiếu một số thư viện chuyển tiếp. Tôi nên đặt cái nào?Các phụ thuộc thư viện chuyển tiếp Batik

Tôi đã cố gắng để có được những xml-api hoặc Xerces lib

Gradle: Mã

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:

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

Thực hiện lỗi:

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 

Cảm ơn

Trả lời

1

Tôi đã tải xuống mã nguồn của batik-1.8 và lớp bị thiếu là một phần của mã nguồn chính thức.

Tôi đã biên soạn các thư viện với ant maven-artifacts và kiểm tra tất cả các tệp jar để xem tệp nào có được số org.w3c.dom package. Tôi đã tìm thấy nó trong batik-ext-1.8.

Bình này đang được Gradle tải xuống, nhưng chỉ có một thư mục Manifest ở đó; không phải lớp học. Xem http://central.maven.org/maven2/org/apache/xmlgraphics/batik-ext/1.8/batik-ext-1.8.jar

Vì vậy, bình không được xây dựng đúng cách khi được đẩy vào quạ.

Tôi mở một báo cáo lỗi ở đây: https://issues.apache.org/jira/browse/BATIK-1120

Cheers

+0

hiện giải pháp của việc này là gì? –

+0

Không cần giải pháp: họ đã sửa nó (thậm chí nghĩ rằng Jira vẫn "mở") –

+1

Một năm sau khi báo cáo thư viện tham nhũng vẫn là duy nhất có sẵn trong Maven. Nó không cố định cho đến khi nó được giao. – tptak

Các vấn đề liên quan