It looks like this is the same as https://issues.apache.org/jira/projects/VELOCITY/issues/VELOCITY-952 and is a much bigger issue.
See also https://issues.apache.org/jira/projects/VELOCITY/issues/VELOCITY-968 On Wed, Sep 27, 2023 at 6:03 PM Christopher Schultz < ch...@christopherschultz.net> wrote: > All, > > (This is all in the context of Velocity 1.7, but I'm not sure anything > has changed through 2.x.) > > Sometimes you want to call a static method. Past workarounds are ugly > but get the job done. For example: > > #set($string = "") > $string.format($locale, "format string", args) > > I have a case where I've been working around java.util.TimeZone like this: > > #set($tz = $dateIHave.timeZone) > #set($utc = $tx.getTimeZone('UTC')) > ... use $utc > > In recent versions of Java (I'm using Java 17 at the moment), I'm > getting this error: > > Exception: org.apache.velocity.exception.VelocityException: > ASTMethod.execute() : exception invoking method 'getTimeZone' in class > sun.util.calendar.ZoneInfo > Stack Trace: > org.apache.velocity.exception.VelocityException: ASTMethod.execute() : > exception invoking method "getTimeZone" in class sun.util.calendar.ZoneInfo > > org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:208) > ... > > I'm intending to call java.util.TimeZone.getTimeZone which should be > fine. But the runtime type of $tz ends up being > sun.util.calendar.ZoneInfo which, unfortunately, defines its own static > getTimeZone method whose signature matches that of java.util.TimeZone > but is not callable due to module. > > In this case, is it possible for me to make a call to > java.util.TimeZone.getTimeZone, or is it time to write a new Tool or > customize an existing one (e.g. DateTool.getTimeZone(String zoneId) > would be handy). > > Thanks, > -chris >