JasperReports는 보고서를 생성하기 전에 열 메타 데이터를 읽습니까?

StackOverflow https://stackoverflow.com/questions/1945875

  •  20-09-2019
  •  | 
  •  

문제

Windows 컴퓨터에서 매우 잘 작동하고 실행중인 JasperReport가 몇 개 있습니다. 문제는 보고서가 ZOS 운영 체제와 함께 메인 프레임에서 실행되도록 설정되었을 때 시작되었습니다.

문제는 Jasper가 보고서를 작성할 때 데이터베이스에서 테이블 메타 데이터를 읽는 것으로 보이며 데이터를 기반으로 데이터가 다가올 것으로 예상합니다.
예 : Varchar (20) 유형의 열이 있으면 보고서 필드가 문자열로 정의 된 경우에도 Jasper는 20 숯을 기다립니다.

이는 Windows 환경에서는 발생하지 않지만 메인 프레임에서는 문자 인코딩이 ebcdic이므로 열에는 메인 프레임에 19 개의 숯이있을 수 있지만 보고서에 23 자로 리턴을 인코딩하면 23 자입니다.

참고 :이 문제는 영어가 아닌 문자로만 발생합니다.

업데이트
ConversionBufferFull Jasper가 보고서를 작성할 때 던져지고 메인 프레임 로그에 액세스 할 수 없기 때문에 전체 추적이 없습니다. 값이 약 17-20 숯일 때 Country_desc라는 열 하나만이 문제가 발생합니다. 예외가 발생합니다.

내가 언급했듯이 메인 프레임에있는 캐릭터는 EBCDIC이지만 JDBC를 통해 읽을 때 유니 코드로 변환되었습니다. 예를 들어, ebcdic에서 단어는 17 숯이 될 것이지만, 변환되면 22가됩니다. 이상한 이유로 Jasper는이 필드에 대해서만 20을 기대합니다.

도움이 되었습니까?

해결책

JasperReports 자체는 데이터 변환이나 필드 길이를 관리하지 않습니다. 이것은 JDBC 드라이버의 문제처럼 보입니다.

Sherman Jaspersoft

다른 팁

sun.io.ConversionBufferFullException 던져졌다 sun.io 캐릭터 인코딩 변환기 및 거품이 발생할 수 있습니다 java.io 이전 버전의 Java 클래스. 이 API는 한동안 더 이상 사용되지 않았으며 Java 6 이후 더 이상 사용되지 않습니다. java.nio.charset 대신 사용됩니다.

JasperReports, JDBC 드라이버 또는 그 두 가지에서 사용하는 것의 캐릭터 변환 버그입니다. JDBC ResultSet 자체의 메타 데이터를 읽는 것과 관련이 없다고 생각하지만, 메타 데이터의 문자열 일 수 있지만 잘못 변환됩니다.

스택 추적없이 비난을 받거나 작업을 생각하기는 어렵습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top