0

Java で xslt を pdf に変換するときに問題が発生しました。このリンクに掲載されているのと同じプロセスに従っています。

PDFへのJava変換」。

エラー:

`

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 ファイルを新しいもので上書きします。コードを再コンパイル しません。

しかし、あなたが知らなかったのは、新しいライブラリがfoo()メソッドを削除したことです。コードを実行すると、コンパイル コードでこのメソッドが呼び出され、存在しないため、この例外がスローされます。

特定のケースでは、これは必ずしも問題あるコードではありません。別のライブラリを使用する 1 つのライブラリがあり、そこに問題がある可能性があります (たとえば、ライブラリ X はライブラリ Y のバージョン 2 を使用していますが、クラスパスにはライブラリ Y のバージョン 1 しかありません)。これが発生した場合は、ライブラリが期待するバージョンを使用していることを確認する必要があります。

特定の問題については、含まれているjarのバージョンを見つける必要があり、おそらくorg.apache.xmlgraphics.java2d.GraphicContext...のリストを取るコンストラクターが必要です。org/apache/xmlgraphics/java2d/GraphicContext意味は忘れました(L...;)V

于 2013-04-19T04:30:48.540 に答える