나는 회사를 떠난 개발자로부터 프로젝트를 상속 받았다. 이 프로젝트는 자바 (Java)에 있으며, 나에게 새로운 재스퍼 보고서를 사용하여 PDF를 생성합니다. 일부 텍스트를 삭제하려면 보고서 중 하나를 업데이트해야합니다. 소스 제어에서 코드를 꺼내 실행하면 정상적으로 작동합니다. 그러나 jrxml 파일 중 하나를 열어 변경하지 않고 빌드 한 다음 보고서를 다시 실행 해보십시오. 내가 갖는 오류 :Jasper가 빌드 중단 (변경 사항 없음)
java.lang.NullPointerException이 java.lang.Class.isAssignableFrom (기본 방법) net.sf.jasperreports.engine.fill.JRFillTextField.getFormat (JRFillTextField.java : 706) net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText (JRFillTextField.java:394) net.sf.jasperreports.engine.fill.JRFillTextField.evaluate (JRFillTextField.java:368) net.sf.jasperreports (JRFillElementContainer.java : 256) d (JRVerticalFiller.java:2036) net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail (JRVerticalFiller.java:760) net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart (JRVerticalFiller.java:270) net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport (JRVerticalFiller.java:128) net.sf.jasperreports.engine.fill.JRBaseFiller.fill (JRBaseFiller.java:946) net.sf.jasperreports.engine .fill.JRBaseFiller.fill (JRBaseFiller.java:845) net.sf.jasperreports.engine.fill.JRFillSubreport.fillSubreport (JRFillSubreport.java:609) net.sf.jasperreports.engine.fill.JRSubreportRunnable.run (JRSubreportRunnable.run) .java : 59) net.sf.jasperreports.engine.fill.JRThreadSubreportRunner.run (JRThreadSubreportRunner.java:205) java.lang.Thread.run (알 수없는 출처)
오류의 의미와 디버깅 방법을 이해할 수 없습니다. 위에서 말했듯이 나는 실제 보고서를 변경하지 않았습니다. 이번에는 iReport에서 jrxml 파일을 열고 빌드했습니다. 재스퍼 파일을 체크인 된 버전으로 되 돌리면 보고서가 다시 시작됩니다. 이 보고서에는 몇 가지 하위 보고서가 있으며 어떤 파일을 작성하면 전체 보고서가 손상 될지는 중요하지 않습니다.
이 도움이하지만 난 코드를 디버깅과가 죽어 가고 라인이 읽는 경우 나도 몰라 :
bytes = JasperRunManager.runReportToPdf(...)
편집 : 내 재스퍼 보고서 JAR 내 iReport로 버전은 다른 버전이었다. 내가 사용하고있는 iRpeort 버전의 JAR 파일을 추가했는데 (5.1.0) 이제 새로운 오류가 발생합니다. 진행! 오류 :
유형의 net.sf.jasperreports.engine의 net.sf.jasperreports.engine.base.JRBaseParagraph.paragraphContainer를 필드에 net.sf.jasperreports.engine.base.JRBaseTextField의 인스턴스를 할당 할 수 없습니다. JRParagraphContainer 도움말 덧글에 감사드립니다
net.sf.jasperreports.engine.base.JRBaseParagraph
의 예이다. 방금 가져온 항아리와 iReport v4.0.1이 일치했습니다. 이제 파일을 편집 할 수 있습니다. 불행히도 나는 처음부터이 모든 것을 배우고 시간을 가질 필요가 없기 때문에 지금은 오래된 버전으로 아플 것이다.
'NullPointerException'은 어떤 객체 참조가'null'을 가리키고 있으며, 그 코드가 메소드를 호출하거나 객체 참조의 필드에 접근하려한다는 것을 의미합니다. '(...)'의 모든 것이 초기화되었는지 확인하십시오. null이 아닙니다. –
매개 변수 중 하나가 null이지만 하나의 매개 변수가 null 항목이 포함 된 해시 맵입니다. 체크 인 된 .jasper 파일을 사용하면 작동하지만 호출 코드가 작동하지만 어쩌면 내가 틀렸다는 것을 알게됩니다. – William
실제 문제는 (내가 말할 수있는 것부터) 당신의 포맷이 jrxml 인 텍스트 필드가 있고'JRFillTextField.getFormat'이'null'을 반환한다는 것입니다. 그런 다음 어떤 내부 메서드는 해당 형식에서'Class.isAssignableFrom'을 호출하여 'NullPointerException'을 throw합니다. –