2016-08-05 4 views
0

JasperReports 라이브러리를 사용하여 PDF 보고서를 생성 중입니다. 이 보고서에는 문제를 일으키는 QR 코드가 있습니다.JasperReport의 보고서를 생성하는 동안 NoSuchMethodError

jasperreports, itext-pdfa, itext-pdf, commons-beanutils, commons-collections, commons-digester, commons-logging, groovy-all, 바베큐, 바코드, barcode4j, 바틱

java.lang.ClassCastException: org.apache.batik.anim.dom.SVGOMDocument cannot be cast to org.apache.batik.dom.svg.SVGOMDocument 
at org.apache.batik.bridge.BridgeContext.setDocument(Unknown Source) 
at org.apache.batik.bridge.GVTBuilder.build(Unknown Source) 
at net.sf.jasperreports.renderers.AbstractSvgDataToGraphics2DRenderer.ensureSvg(AbstractSvgDataToGraphics2DRenderer.java:166) 
at net.sf.jasperreports.renderers.AbstractSvgDataToGraphics2DRenderer.getDimension(AbstractSvgDataToGraphics2DRenderer.java:111) 
at net.sf.jasperreports.engine.export.JRPdfExporter$InternalImageProcessor.processGraphics2D(JRPdfExporter.java:1793) 
at net.sf.jasperreports.engine.export.JRPdfExporter$InternalImageProcessor.process(JRPdfExporter.java:1582) 
at net.sf.jasperreports.engine.export.JRPdfExporter$InternalImageProcessor.access$300(JRPdfExporter.java:1535) 
at net.sf.jasperreports.engine.export.JRPdfExporter.exportImage(JRPdfExporter.java:1475) 
at net.sf.jasperreports.engine.export.JRPdfExporter.exportElements(JRPdfExporter.java:1093) 
at net.sf.jasperreports.engine.export.JRPdfExporter.exportPage(JRPdfExporter.java:1056) 
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReportToStream(JRPdfExporter.java:920) 
at net.sf.jasperreports.engine.export.JRPdfExporter.exportReport(JRPdfExporter.java:537) 
at reports.JasperReport.generatePdf(JasperReport.java:178) 

어떤 문제가 : -anim, 바틱 브리지 코어, w3c.css.sac, W3C, xmlgraphics - 공유지는, 바틱 - 모든

나는 예외가 나타날?

+0

: 예컨대, 클래스 중 하나를위한 전체 클래스 이름을 사용해야 할 수도 있습니다. 'anim.dom'은'dom.svg'와 같지 않습니다 – Jens

+0

@ pulpet112 전체 스택 추적이란 무엇입니까? –

+0

@Jens full stacktrace를 추가했습니다. – pulpet112

답변

0

이것은 자신의 코드 (작성한 코드) 인 경우 잘못된 SVGOMDocument 클래스 (다른 Java 패키지에 속함)를 가져 왔기 때문입니다. 알맞은 Java IDE (Eclipse, IntelliJ, NetBeans)를 사용하여 신속하게 파악할 수 있어야합니다. 또한

같은 암시 수입 피하기 위해 가능한 한 시도로 많은 : 코드의 안정성이 저하 될 수 있습니다

import org.apache.batik.dom.svg.*; 
import org.apache.batik.anim.dom.*; 

, 예를 위에 추가 된 행은 기존의 작업 코드에 대한 참조를 변경시킬 수 있습니다. 명시 적 가져 오기 사용 (가져 오기 org.apache.batik.dom.svg.SVGOMDocument).

호출하는 메소드의 반환 유형을 찾고 올바른 Java 패키지에서 가져옵니다. Eclipse IDE에서 위의 패키지/클래스가 포함 된 가져 오기를 제거하고 소스> 가져 오기 구성 (Ctrl-Shift-O)을 선택하면됩니다. 당신은 하나의 소스 코드 파일에 두 클래스가있는 경우

, 당신은 당신이 두 개의 서로 다른 클래스를 그만큼 실수도

org.apache.batik.dom.svg.SVGOMDocument document = SomeLibrary.getSomething(); 
+0

내 코드를 작성하고 있지만이 클래스를 직접 사용하지 않습니다. 내 코드에서는 JRPdfExporter를 사용하여 내 보고서를 pdf로 내 보냅니다. 그리고 그게 전부입니다.이 클래스는 다른 클래스에서 호출합니다. 재스퍼 라이브러리 – pulpet112

관련 문제