You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ofbiz.apache.org by "Jacques Le Roux (Jira)" <ji...@apache.org> on 2022/12/08 07:50:00 UTC

[jira] [Updated] (OFBIZ-12721) Teplace all occurrences of java.util.TimeZone by java.time.ZoneId

     [ https://issues.apache.org/jira/browse/OFBIZ-12721?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jacques Le Roux updated OFBIZ-12721:
------------------------------------
        Parent: OFBIZ-12400
    Issue Type: Sub-task  (was: Task)

> Teplace all occurrences of java.util.TimeZone by java.time.ZoneId
> -----------------------------------------------------------------
>
>                 Key: OFBIZ-12721
>                 URL: https://issues.apache.org/jira/browse/OFBIZ-12721
>             Project: OFBiz
>          Issue Type: Sub-task
>          Components: ALL COMPONENTS
>    Affects Versions: Upcoming Branch
>         Environment: Java 17
>            Reporter: Jacques Le Roux
>            Priority: Major
>
> Using JDK 17, we have this issue:
> {noformat}
> 2022-12-06 19:04:30,689 |sse-nio-8443-exec-10 |FreeMarkerWorker              |E| null
> freemarker.core._TemplateModelException: Java method "sun.util.calendar.ZoneInfo.useDaylightTime()" threw an exception when invoked on sun.util.calendar.ZoneInfo object "sun.util.calendar.ZoneInfo[id=\"Europe/Paris\",offset=3600000,dstSa
> vings=3600000,useDaylight=true,transitions=184,lastRule=java.util.SimpleTimeZone[id=Europe/Paris,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,start
> TimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]]"; see cause exception in the Java stack trace.
> ----
> FTL stack trace ("~" means nesting-related):
>         - Failed at: ${timeZone.getDisplayName(timeZone.us...  [in template "component://helveticus/template/includes/Footer.ftl" at line 21, column 98]
> ----
>         at freemarker.ext.beans._MethodUtil.newInvocationTemplateModelException(_MethodUtil.java:292) ~[freemarker-2.3.31.jar:2.3.31]
> [...]
> Caused by: java.lang.IllegalAccessException: class freemarker.ext.beans.BeansWrapper cannot access class sun.util.calendar.ZoneInfo (in module java.base) because module java.base does not export sun.util.calendar to unnamed module @1c852c0f
>         at jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:392) ~[?:?]
>         at java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:674) ~[?:?]
>         at java.lang.reflect.Method.invoke(Method.java:560) ~[?:?]
>         at freemarker.ext.beans.BeansWrapper.invokeMethod(BeansWrapper.java:1552) ~[freemarker-2.3.31.jar:2.3.31]
>         at freemarker.ext.beans.SimpleMethodModel.exec(SimpleMethodModel.java:73) ~[freemarker-2.3.31.jar:2.3.31]
>         ... 85 more
> {noformat}
> [The var timeZone is accessible in screen context|https://cwiki.apache.org/confluence/display/OFBIZ/Variables+always+available+in+screen+context]. The java.util.TimeZone class uses sun.util.calendar.ZoneInfo internally. It's no longer supported by Java 17. We need to replace all occurrences of java.util.TimeZone by java.time.ZoneId.
> An easy temporary solution is to set {{--add-exports=java.base/sun.util.calendar=ALL-UNNAMED}} in build.gradle:
> : ['-Xms128M','-Xmx1024M','-Djdk.serialFilter=maxarray=100000;maxdepth=20;maxrefs=1000;maxbytes=500000','--add-exports=java.base/sun.util.calendar=ALL-UNNAMED']
> It has no impact with JDK 11.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)