Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

'Batik not in classpath' error when running servlet

I'm writing an extension of the FopServlet.java included in Apache FOP.

My platform is Linux CentOS 5.7-64bit, with Tomcat 5.5.

The servlet 'works', but I'm unable to process SVG files.

The error I get when Tomcat runs the servlet is

'Batik not in classpath'.

But in 'webapps/fop/WEB-INF/lib' there is 'batik-all-1.7.jar' and all the other jars.

I'm not a java expert, so I'm unable to focus on the problem; googling around, maybe there is a missing jar, but which one?

AVVERTENZA: Batik not in class path
java.lang.NoClassDefFoundError: org/w3c/dom/svg/SVGDocument
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1862)
        at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:888)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1341)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1220)
        at org.apache.batik.dom.svg.SVGDOMImplementation.createDocument(Unknown Source)
        at org.apache.batik.dom.util.SAXDocumentFactory.startElement(Unknown Source)
        at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
        at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
        at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
        at org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
        at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
        at org.apache.batik.dom.util.SAXDocumentFactory.createDocument(Unknown Source)
        at org.apache.batik.dom.util.SAXDocumentFactory.createDocument(Unknown Source)
        at org.apache.batik.dom.svg.SAXSVGDocumentFactory.createDocument(Unknown Source)
        at org.apache.batik.dom.svg.SAXSVGDocumentFactory.createSVGDocument(Unknown Source)
        at org.apache.fop.image.loader.batik.PreloaderSVG$Loader.getImage(PreloaderSVG.java:122)
        at org.apache.fop.image.loader.batik.PreloaderSVG$Loader.access$100(PreloaderSVG.java:105)
        at org.apache.fop.image.loader.batik.PreloaderSVG.preloadImage(PreloaderSVG.java:73)
        at org.apache.xmlgraphics.image.loader.ImageManager.preloadImage(ImageManager.java:175)
        at org.apache.xmlgraphics.image.loader.cache.ImageCache.needImageInfo(ImageCache.java:128)
        at org.apache.xmlgraphics.image.loader.ImageManager.getImageInfo(ImageManager.java:122)
        at org.apache.fop.fo.flow.ExternalGraphic.bind(ExternalGraphic.java:81)
        at org.apache.fop.fo.FObj.processNode(FObj.java:123)
        at org.apache.fop.fo.FOTreeBuilder$MainFOHandler.startElement(FOTreeBuilder.java:282)
        at org.apache.fop.fo.FOTreeBuilder.startElement(FOTreeBuilder.java:171)
        at org.apache.xalan.transformer.TransformerIdentityImpl.startElement(TransformerIdentityImpl.java:1072)
        at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
        at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
        at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
        at org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:484)
        at org.apache.fop.servlet.FopServlet.render(FopServlet.java:260)
        at org.apache.fop.servlet.FopServlet.renderFO(FopServlet.java:199)
        at org.apache.fop.servlet.FopServlet.doGet(FopServlet.java:136)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
        at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
        at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
        at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
        at java.lang.Thread.run(Thread.java:636)
Caused by: java.lang.ClassNotFoundException: org.w3c.dom.svg.SVGDocument
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1374)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1220)
        ... 64 more
like image 448
AndrewQ Avatar asked Oct 25 '11 14:10

AndrewQ


2 Answers

It appears to be a bug in Fop where they forgot to include a dependency.

The missing class is in the JAR file - xml-apis-ext.jar Which is also available from the Apache xml-commons project.

like image 163
Nate Avatar answered Nov 07 '22 22:11

Nate


The error message is misleading, this is really a lack of xml commons external.

like image 42
Edwin Buck Avatar answered Nov 07 '22 23:11

Edwin Buck