点击此处---> 群内免费提供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位的
任何帮助或建议都非常感谢,
再见彼得
如果其他人遇到此问题:
我们打开了一张支持票,并且应该使用即将发布的Crystal Reports Java Runtime版本12.2.227解决较新的64位Java JDK的问题。
再见彼得
一周热门 更多>