2011-10-25 20 views
2

私はApache FOPに含まれているFopServlet.javaの拡張を書いています。
私のプラットフォームはLinux CentOS 5.7-64bit、Tomcat 5.5です。
サーブレットは動作しますが、SVGファイルを処理できません。 Tomcatがサーブレットを実行しているときに発生するエラーは、 'classpathにはないバティック'です。しかし、 'webapps/fop/WEB-INF/lib'には 'batik-all-1.7.jar'と他のすべてのjarファイルがあります。 私はJavaの専門家ではないので、問題に集中できません。周りにグーグル、おそらく欠けている瓶がありますが、どちらか?クラスパスにないバティック

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 

答えて

16

bug in Fopのように見えますが、依存関係を忘れてしまいました。

欠落しているクラスは、のJARファイルにあります。これはApache xml-commons projectからも入手できます。

+0

このレガシーアプリから私を救うだけです。本当にありがとう! –

5

エラーメッセージは誤解を招きます。これは実際にはxmlコモンズの外部がないことです。

0

.jarファイルを使用してfedoraからBatikを実行している場合、javaが-classpathフラグを無視しているため、かなり痛いです。

# mkdir scratch 
# cd scratch 
# jar -xf /usr/share/java/batik-rasterizer.jar 
(私はとにかくあなたがいつものsudoコマンドをすることができ、あなたはスーパーユーザあると仮定)を スクラッチディレクトリを作成します。 私は 一つの解決策は、以下のことができ、あなたのシステムに応じて場所を選択し を/ usr/share/javaのでバティックを想定します

この出力スクラッチにjarファイルの内容は、MANIFEST.MFファイルを作成したり、ダンプ

#cp META-INF/MANIFEST.MF . 

からの出力1を取る今(I VIを使用したい、MANIFEST.MFファイルを編集誰でも好みのものを使用する)

#vi MANIFEST.MF 

クラスパスを追加します:ラインMANIFEST.MFに例として:次に

Class-Path: batik-all.jar xmlgraphics-commons.jar xml-commons-apis-ext.jar pdf-transcoder.jar avalon-framework.jar avalon-framework-api.jar apache-commons-logging.jar apache-commons-io.jar 

#jar cmf MANIFEST.MF /usr/share/java/batik-rasterizer.jar org/* 

をファイルを閉じて、jarファイルを再作成するには、すべてのjarファイルバティックを含めますネストされたクラスを持っています

あなたはそれを使用することができます!例

ため

$java -jar /usr/share/java/batik-rasterizer.jar -scriptSecurittyOff -m image/png -d image.png image.svg 

そしてそれはです!

関連する問題