0

在 java 中将 xslt 转换为 pdf 时遇到问题,我遵循此链接中发布的相同过程

Java 转换为 PDF ”。

错误:

`

Caused by: java.lang.NoSuchMethodError: org.apache.xmlgraphics.java2d.GraphicContext.<init>(Lorg/apache/xmlgraphics/java2d/GraphicContext;)V
    at org.apache.fop.render.intermediate.IFGraphicContext.<init>(IFGraphicContext.java:50)
    at org.apache.fop.render.intermediate.IFGraphicContext.clone(IFGraphicContext.java:56)
    at org.apache.fop.render.intermediate.IFRenderer.saveGraphicsState(IFRenderer.java:632)
    at org.apache.fop.render.intermediate.IFRenderer.startViewport(IFRenderer.java:885)
    at org.apache.fop.render.intermediate.IFRenderer.startVParea(IFRenderer.java:878)
    at org.apache.fop.render.AbstractRenderer.renderRegionViewport(AbstractRenderer.java:289)
    at org.apache.fop.render.intermediate.IFRenderer.renderRegionViewport(IFRenderer.java:731)
    at org.apache.fop.render.AbstractRenderer.renderPageAreas(AbstractRenderer.java:249)
    at org.apache.fop.render.AbstractRenderer.renderPage(AbstractRenderer.java:230)
    at org.apache.fop.render.intermediate.IFRenderer.renderPage(IFRenderer.java:580)
    at org.apache.fop.area.RenderPagesModel.addPage(RenderPagesModel.java:114)
    at org.apache.fop.layoutmgr.AbstractPageSequenceLayoutManager.finishPage(AbstractPageSequenceLayoutManager.java:312)
    at org.apache.fop.layoutmgr.PageSequenceLayoutManager.finishPage(PageSequenceLayoutManager.java:167)
    at org.apache.fop.layoutmgr.PageSequenceLayoutManager.activateLayout(PageSequenceLayoutManager.java:109)
    at org.apache.fop.area.AreaTreeHandler.endPageSequence(AreaTreeHandler.java:238)
    at org.apache.fop.fo.pagination.PageSequence.endOfNode(PageSequence.java:120)
    at org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilder.java:349)
    at org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:177)
    at net.sf.saxon.event.ContentHandlerProxy.endElement(ContentHandlerProxy.java:391)
    at net.sf.saxon.event.ProxyReceiver.endElement(ProxyReceiver.java:174)
    at net.sf.saxon.event.NamespaceReducer.endElement(NamespaceReducer.java:213)
    at net.sf.saxon.event.ComplexContentOutputter.endElement(ComplexContentOutputter.java:417)
    at net.sf.saxon.instruct.ElementCreator.processLeavingTail(ElementCreator.java:301)
    at net.sf.saxon.instruct.Block.processLeavingTail(Block.java:409)
    at net.sf.saxon.instruct.Instruction.process(Instruction.java:94)
    at net.sf.saxon.instruct.ElementCreator.processLeavingTail(ElementCreator.java:298)
    at net.sf.saxon.instruct.Template.applyLeavingTail(Template.java:175)
    at net.sf.saxon.instruct.ApplyTemplates.applyTemplates(ApplyTemplates.java:343)
    at net.sf.saxon.Controller.transformDocument(Controller.java:1736)
    at net.sf.saxon.Controller.transform(Controller.java:1560)
    at mypackage.v2.business.pdf.XMLtoPDF.convertXMLPDF(XMLtoPDF.java:103)
    ... 51 more
java.lang.ClassCastException: java.lang.NoSuchMethodError cannot be cast to java.lang.Exception

` 请让我知道可能是什么问题。

4

1 回答 1

0

文档中所述

如果应用程序尝试调用类的指定方法(静态或实例),并且该类不再具有该方法的定义,则抛出该异常。

这是如何发生的。想象一下,您构建了一些代码,该代码使用了一个名为foo(). 您编译了项目,然后决定升级库。为此,您可以用新的 jar 文件覆盖旧的 jar 文件。你不需要重新编译你的代码。

但是您不知道的是新库删除了该foo()方法。现在如果你运行你的代码,它会抛出这个异常,因为你的编译代码调用了这个方法并且它不再存在。

在您的特定情况下,这不一定是您的代码有问题。可能是您有一个使用另一个库的库并且问题就在那里(例如,库 X 使用库 Y 的版本 2,但您的类路径中只有库 Y 版本 1)。如果发生这种情况,您需要确保库使用的是他们期望的版本。

对于您的特定问题,您需要找到其中包含的 jar 的版本,org.apache.xmlgraphics.java2d.GraphicContext并且它需要有一个构造函数,该构造函数需要一个org/apache/xmlgraphics/java2d/GraphicContext......也许......列表。我忘了什么(L...;)V意思。

于 2013-04-19T04:30:48.540 回答