报告不支持系统日期格式和Java java.locale.providers设置

2020-08-14 07:25发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

升级到较新的Java版本(或64位JRE)或Java版本的CR后,日期格式出现问题。

报告:

使用带格式的日期字段:使用短系统日期

工作环境:

Windows 10(具有德语语言环境),但系统日期格式设置为" JJJJ-MM-TT"(英语等效为YYYY--MM-DD)

Java版本12.2.220的CrystalReports

Oracle JRE 1.8_u74 x86/32bit

预期输出:

2019-10-29

*不*工作环境:

使用Oracle JRE 1.8 u74 x86_64/64bit(或任何其他更新的Oracle或OpenJDK)

-或-

将Crystal Reports更新为较新的版本,例如。 12.2.225

错误的输出:

29.10.2019(所以这是默认的德语语言环境,而不是Windows下"系统设置"中定义的语言环境)

想法/指标:

在JDK8开发的某个地方,语言环境处理发生了变化。(请参见 https://docs.oracle.com/javase/8/docs/technotes/guides/intl/enhancements.8.html

现在有一个属性

 java.locale.providers 

控制JRE从何处获取其语言环境值。

我有一个小的Java测试程序:

 import java.text.DateFormat;
 导入java.util.Calendar;
 公共课程ATest {
   公共静态void main(final String [] args)引发异常{
    最终的DateFormat格式= DateFormat.getDateInstance(DateFormat.SHORT);
    最终Calendar cal = Calendar.getInstance();
    cal.set(Calendar.DAY_OF_MONTH,31);
    cal.set(Calendar.MONTH,Calendar.MARCH);
    cal.set(日历年,2012);
    System.out.println(" Date:" + format.format(cal.getTime()));
   }
 } 

仅在描述的环境(这样的较新的64位JRE)上运行时,它会产生:

日期:31.03.12 

在运行该程序时添加-Djava.locale.providers = HOST时会产生

日期:2012-03-31 

这是预期的输出。

将此属性添加到执行报表的Java运行时时,出现以下异常:

 com.crystaldecisions.sdk.occa.report.lib.ReportSDKException:Unerwarteter Datenbank-Connector-Fehler ----错误代码:-2147467259错误代码名称:失败
 在com.crystaldecisions.sdk.occa.report.application.PrintOutputController.if(SourceFile:238)
 在com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(SourceFile:148)
 在com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(SourceFile:129)
 
 引起原因:com.crystaldecisions.reports.common.QueryEngineException:Unerwarteter Datenbank-Connector-Fehler
 在com.crystaldecisions.reports.queryengine.Connection.a(SourceFile:2963)
 在com.crystaldecisions.reports.queryengine.Rowset.Ao(SourceFile:956)
 在com.crystaldecisions.reports.queryengine.Rowset.bM(SourceFile:533)
 在com.crystaldecisions.reports.queryengine.Rowset.z6(SourceFile:245)
 在com.crystaldecisions.reports.queryengine.RowsetBase.zU(SourceFile:162)
 在com.crystaldecisions.reports.queryengine.QueryInfo.vY(SourceFile:261)
 在com.crystaldecisions.reports.datafoundation.DFQuery.for(SourceFile:628)
 在com.crystaldecisions.reports.datalayer.a.do(SourceFile:1621)
 在com.crystaldecisions.reports.datalayer.a.a(SourceFile:1404)
 在com.crystaldecisions.reports.dataengine.m.void(SourceFile:336)
 在com.crystaldecisions.reports.dataengine.j.void(SourceFile:531)
 在com.crystaldecisions.reports.dataengine.m.o(SourceFile:422)
 在com.crystaldecisions.reports.dataengine.m.a(SourceFile:173)
 在com.crystaldecisions.reports.dataengine.ContextNode.a(SourceFile:114)
 在com.crystaldecisions.reports.dataengine.ContextNode.a(SourceFile:95)
 在com.crystaldecisions.reports.dataengine.j.case(SourceFile:1096)
 在com.crystaldecisions.reports.dataengine.h。(SourceFile:108)
 在com.crystaldecisions.reports.dataengine.DataContext.a(SourceFile:258)
 在com.crystaldecisions.reports.dataengine.DataProcessor2.a(SourceFile:4664)
 在com.crystaldecisions.reports.dataengine.DataProcessor2.a(SourceFile:4578)
 在com.crystaldecisions.reports.dataengine.DataProcessor2.new(SourceFile:2656)
 在com.crystaldecisions.reports.dataengine.DataProcessor2.byte(SourceFile:2614)
 在com.crystaldecisions.reports.dataengine.DataProcessor2.try(SourceFile:2286)
 在com.crystaldecisions.reports.dataengine.DataProcessor2.int(SourceFile:2446)
 在com.crystaldecisions.reports.dataengine.DataProcessor2.I(SourceFile:1015)
 在com.crystaldecisions.reports.formatter.formatter.objectformatter.ObjectFormatter.fs(SourceFile:526)
 在com.crystaldecisions.reports.formatter.formatter.paginator.PageFormatter.if(SourceFile:613)
 在com.crystaldecisions.reports.formatter.formatter.paginator.PageFormatter.a(SourceFile:578)
 在com.crystaldecisions.reports.formatter.formatter.paginator.PageFormatter.Y(SourceFile:387)
 在com.crystaldecisions.reports.formatter.formatter.paginator.PageFormatter.moveToPageN(SourceFile:339)
 在com.crystaldecisions.reports.formatter.export2.a.a(SourceFile:79)
 在com.crystaldecisions.reports.formatter.export2.a.a(SourceFile:253)
 在com.crystaldecisions.reports.formatter.export2.ExportSupervisorEx.if(SourceFile:647)
 在com.crystaldecisions.reports.formatter.export2.ExportSupervisorEx.a(SourceFile:597)
 在com.businessobjects.reports.sdk.requesthandler.ReportViewingRequestHandler.a(SourceFile:641)
 在com.businessobjects.reports.sdk.requesthandler.ReportViewingRequestHandler.int(SourceFile:677)
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter.do(SourceFile:1943)
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter.if(源文件:660)
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter.a(源文件:166)
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter $ 2.a(源文件:528)
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter $ 2.call(源文件:525)
 在com.crystaldecisions.reports.common.ThreadGuard.syncExecute(SourceFile:102)
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter.for(源文件:524)
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter.int(SourceFile:423)
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(SourceFile:351)
 在com.businessobjects.sdk.erom.jrc.a.a(SourceFile:54)
 在com.businessobjects.sdk.erom.jrc.a.execute(SourceFile:67)
 在com.crystaldecisions.proxy.remoteagent.RemoteAgent $ a.execute(SourceFile:716)
 在com.crystaldecisions.proxy.remoteagent.CommunicationChannel.a(SourceFile:125)
 在com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(SourceFile:537)
 在com.crystaldecisions.sdk.occa.report.application.dt.a(SourceFile:186)
 在com.crystaldecisions.sdk.occa.report.application.ReportSource.a(SourceFile:1558)
 在com.crystaldecisions.sdk.occa.report.application.ReportSource.a(SourceFile:337)
 在com.crystaldecisions.sdk.occa.report.application.PrintOutputController.if(SourceFile:224)
 ...另外18个
 引起原因:com.businessobjects.reports.jdbinterface.common.DBException:Unerwarteter Datenbank-Connector-Fehler
 在com.crystaldecisions.reports.queryengine.driverImpl.jdbc.JDBCQueryDefinition.Execute(未知源)
 在com.crystaldecisions.reports.queryengine.driverImpl.jdbc.JDBCQueryDefinition.Execute(未知源)
 在com.crystaldecisions.reports.queryengine.driverImpl.jdbc.JDBCQueryDefinition.Execute(未知源)
 在com.crystaldecisions.reports.queryengine.Connection.a(SourceFile:2945)
 ...更多71
 引起原因:java.sql.SQLDataException:ORA-01843:KeingültigerMonat(无有效月份)
 在oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
 在oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
 在oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059)
 在oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
 在oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
 在oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
 在oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:210)
 在oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:30)
 在oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:762)
 在oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:925)上
 在oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1111)
 在oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1792)
 在oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1745)
 在oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:334)
 ...还有75个

结论

*日期处理中的某些内容在Java和/或Java的CR中已更改

*配置JDK应使用哪种语言环境的假定方式会中断CR报告执行

*为什么仅切换到相同的(旧的)Oracle JRE但具有64位中断,ReportExecution尚不清楚

*此问题使我们无法升级Java和CR并切换到64位的

任何帮助或建议都非常感谢,

再见彼得

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

升级到较新的Java版本(或64位JRE)或Java版本的CR后,日期格式出现问题。

报告:

使用带格式的日期字段:使用短系统日期

工作环境:

Windows 10(具有德语语言环境),但系统日期格式设置为" JJJJ-MM-TT"(英语等效为YYYY--MM-DD)

Java版本12.2.220的CrystalReports

Oracle JRE 1.8_u74 x86/32bit

预期输出:

2019-10-29

*不*工作环境:

使用Oracle JRE 1.8 u74 x86_64/64bit(或任何其他更新的Oracle或OpenJDK)

-或-

将Crystal Reports更新为较新的版本,例如。 12.2.225

错误的输出:

29.10.2019(所以这是默认的德语语言环境,而不是Windows下"系统设置"中定义的语言环境)

想法/指标:

在JDK8开发的某个地方,语言环境处理发生了变化。(请参见 https://docs.oracle.com/javase/8/docs/technotes/guides/intl/enhancements.8.html

现在有一个属性

 java.locale.providers 

控制JRE从何处获取其语言环境值。

我有一个小的Java测试程序:

 import java.text.DateFormat;
 导入java.util.Calendar;
 公共课程ATest {
   公共静态void main(final String [] args)引发异常{
    最终的DateFormat格式= DateFormat.getDateInstance(DateFormat.SHORT);
    最终Calendar cal = Calendar.getInstance();
    cal.set(Calendar.DAY_OF_MONTH,31);
    cal.set(Calendar.MONTH,Calendar.MARCH);
    cal.set(日历年,2012);
    System.out.println(" Date:" + format.format(cal.getTime()));
   }
 } 

仅在描述的环境(这样的较新的64位JRE)上运行时,它会产生:

日期:31.03.12 

在运行该程序时添加-Djava.locale.providers = HOST时会产生

日期:2012-03-31 

这是预期的输出。

将此属性添加到执行报表的Java运行时时,出现以下异常:

 com.crystaldecisions.sdk.occa.report.lib.ReportSDKException:Unerwarteter Datenbank-Connector-Fehler ----错误代码:-2147467259错误代码名称:失败
 在com.crystaldecisions.sdk.occa.report.application.PrintOutputController.if(SourceFile:238)
 在com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(SourceFile:148)
 在com.crystaldecisions.sdk.occa.report.application.PrintOutputController.export(SourceFile:129)
 
 引起原因:com.crystaldecisions.reports.common.QueryEngineException:Unerwarteter Datenbank-Connector-Fehler
 在com.crystaldecisions.reports.queryengine.Connection.a(SourceFile:2963)
 在com.crystaldecisions.reports.queryengine.Rowset.Ao(SourceFile:956)
 在com.crystaldecisions.reports.queryengine.Rowset.bM(SourceFile:533)
 在com.crystaldecisions.reports.queryengine.Rowset.z6(SourceFile:245)
 在com.crystaldecisions.reports.queryengine.RowsetBase.zU(SourceFile:162)
 在com.crystaldecisions.reports.queryengine.QueryInfo.vY(SourceFile:261)
 在com.crystaldecisions.reports.datafoundation.DFQuery.for(SourceFile:628)
 在com.crystaldecisions.reports.datalayer.a.do(SourceFile:1621)
 在com.crystaldecisions.reports.datalayer.a.a(SourceFile:1404)
 在com.crystaldecisions.reports.dataengine.m.void(SourceFile:336)
 在com.crystaldecisions.reports.dataengine.j.void(SourceFile:531)
 在com.crystaldecisions.reports.dataengine.m.o(SourceFile:422)
 在com.crystaldecisions.reports.dataengine.m.a(SourceFile:173)
 在com.crystaldecisions.reports.dataengine.ContextNode.a(SourceFile:114)
 在com.crystaldecisions.reports.dataengine.ContextNode.a(SourceFile:95)
 在com.crystaldecisions.reports.dataengine.j.case(SourceFile:1096)
 在com.crystaldecisions.reports.dataengine.h。(SourceFile:108)
 在com.crystaldecisions.reports.dataengine.DataContext.a(SourceFile:258)
 在com.crystaldecisions.reports.dataengine.DataProcessor2.a(SourceFile:4664)
 在com.crystaldecisions.reports.dataengine.DataProcessor2.a(SourceFile:4578)
 在com.crystaldecisions.reports.dataengine.DataProcessor2.new(SourceFile:2656)
 在com.crystaldecisions.reports.dataengine.DataProcessor2.byte(SourceFile:2614)
 在com.crystaldecisions.reports.dataengine.DataProcessor2.try(SourceFile:2286)
 在com.crystaldecisions.reports.dataengine.DataProcessor2.int(SourceFile:2446)
 在com.crystaldecisions.reports.dataengine.DataProcessor2.I(SourceFile:1015)
 在com.crystaldecisions.reports.formatter.formatter.objectformatter.ObjectFormatter.fs(SourceFile:526)
 在com.crystaldecisions.reports.formatter.formatter.paginator.PageFormatter.if(SourceFile:613)
 在com.crystaldecisions.reports.formatter.formatter.paginator.PageFormatter.a(SourceFile:578)
 在com.crystaldecisions.reports.formatter.formatter.paginator.PageFormatter.Y(SourceFile:387)
 在com.crystaldecisions.reports.formatter.formatter.paginator.PageFormatter.moveToPageN(SourceFile:339)
 在com.crystaldecisions.reports.formatter.export2.a.a(SourceFile:79)
 在com.crystaldecisions.reports.formatter.export2.a.a(SourceFile:253)
 在com.crystaldecisions.reports.formatter.export2.ExportSupervisorEx.if(SourceFile:647)
 在com.crystaldecisions.reports.formatter.export2.ExportSupervisorEx.a(SourceFile:597)
 在com.businessobjects.reports.sdk.requesthandler.ReportViewingRequestHandler.a(SourceFile:641)
 在com.businessobjects.reports.sdk.requesthandler.ReportViewingRequestHandler.int(SourceFile:677)
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter.do(SourceFile:1943)
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter.if(源文件:660)
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter.a(源文件:166)
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter $ 2.a(源文件:528)
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter $ 2.call(源文件:525)
 在com.crystaldecisions.reports.common.ThreadGuard.syncExecute(SourceFile:102)
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter.for(源文件:524)
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter.int(SourceFile:423)
 在com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(SourceFile:351)
 在com.businessobjects.sdk.erom.jrc.a.a(SourceFile:54)
 在com.businessobjects.sdk.erom.jrc.a.execute(SourceFile:67)
 在com.crystaldecisions.proxy.remoteagent.RemoteAgent $ a.execute(SourceFile:716)
 在com.crystaldecisions.proxy.remoteagent.CommunicationChannel.a(SourceFile:125)
 在com.crystaldecisions.proxy.remoteagent.RemoteAgent.a(SourceFile:537)
 在com.crystaldecisions.sdk.occa.report.application.dt.a(SourceFile:186)
 在com.crystaldecisions.sdk.occa.report.application.ReportSource.a(SourceFile:1558)
 在com.crystaldecisions.sdk.occa.report.application.ReportSource.a(SourceFile:337)
 在com.crystaldecisions.sdk.occa.report.application.PrintOutputController.if(SourceFile:224)
 ...另外18个
 引起原因:com.businessobjects.reports.jdbinterface.common.DBException:Unerwarteter Datenbank-Connector-Fehler
 在com.crystaldecisions.reports.queryengine.driverImpl.jdbc.JDBCQueryDefinition.Execute(未知源)
 在com.crystaldecisions.reports.queryengine.driverImpl.jdbc.JDBCQueryDefinition.Execute(未知源)
 在com.crystaldecisions.reports.queryengine.driverImpl.jdbc.JDBCQueryDefinition.Execute(未知源)
 在com.crystaldecisions.reports.queryengine.Connection.a(SourceFile:2945)
 ...更多71
 引起原因:java.sql.SQLDataException:ORA-01843:KeingültigerMonat(无有效月份)
 在oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
 在oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
 在oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059)
 在oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
 在oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
 在oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
 在oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:210)
 在oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:30)
 在oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:762)
 在oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:925)上
 在oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1111)
 在oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1792)
 在oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1745)
 在oracle.jdbc.driver.OracleStatementWrapper.execute(OracleStatementWrapper.java:334)
 ...还有75个

结论

*日期处理中的某些内容在Java和/或Java的CR中已更改

*配置JDK应使用哪种语言环境的假定方式会中断CR报告执行

*为什么仅切换到相同的(旧的)Oracle JRE但具有64位中断,ReportExecution尚不清楚

*此问题使我们无法升级Java和CR并切换到64位的

任何帮助或建议都非常感谢,

再见彼得

付费偷看设置
发送
1条回答
d56caomao
1楼-- · 2020-08-14 08:03

如果其他人遇到此问题:

我们打开了一张支持票,并且应该使用即将发布的Crystal Reports Java Runtime版本12.2.227解决较新的64位Java JDK的问题。

再见彼得

一周热门 更多>