From what I found, the problem happens at the very end of the template. It seems to be a corner case where the parser doesn't have the start position of the very last token. So it will be useful to know how the faulty template ends (with a reference, a directive, etc.?).

Can you identify the faulty template, and tell us what is at the end?

On 12/06/2025 08:27, Claude Brisson wrote:
Since it happens during the parsing, it means that it only depends on the template itself, not to the values provided to it.

So if you are able to log the template location, you will know the problematic template at least.

I'm going to try to pinpoint the problem with the stack trace you provided and let you know if I am able to identify the cause.

On 10/06/2025 23:50, Kish, Robert [AG] wrote:
Hello!

We have 2 similar environments and under Velocity Engine 2.3, the code works as expected and we get back the template from the API call. But when upgrading to 2.4.1 (or trying 2.4) one of our environments fails with an exception. Unfortunately, it's in an environment where I can't use a debugger.

I'm looking for ideas on how to resolve this issue or identify a specific bug that can be reported to the Velocity Team for resolution.

Log + Exception
o.a.v.macro - autoload off: VM system will not automatically reload global library macros o.a.v.parser - XXXXXXXXXXXXXXXXXXXXXXXXXXXX: offset -1, count 79, length 4096 java.lang.StringIndexOutOfBoundsException: offset -1, count 79, length 4096          at java.base/java.lang.String.checkBoundsOffCount(String.java:3304) ~[?:?]          at java.base/java.lang.String.rangeCheck(String.java:280) ~[?:?]
         at java.base/java.lang.String.<init>(String.java:276) ~[?:?]
                at org.apache.velocity.runtime.parser.VelocityCharStream.GetImage(VelocityCharStream.java:434) ~[velocity-engine-core-2.4.jar:2.4]          at org.apache.velocity.runtime.parser.StandardParserTokenManager.jjFillToken(StandardParserTokenManager.java:7796) ~[velocity-engine-core-2.4.jar:2.4]          at org.apache.velocity.runtime.parser.StandardParserTokenManager.getNextToken(StandardParserTokenManager.java:7866) ~[velocity-engine-core-2.4.jar:2.4]          at org.apache.velocity.runtime.parser.StandardParser.jj_scan_token(StandardParser.java:5611) ~[velocity-engine-core-2.4.jar:2.4]          at org.apache.velocity.runtime.parser.StandardParser.jj_3R_EndingZeroWidthWhitespace_1591_5_49(StandardParser.java:5448) ~[velocity-engine-core-2.4.jar:2.4]          at org.apache.velocity.runtime.parser.StandardParser.jj_3_3(StandardParser.java:5454) ~[velocity-engine-core-2.4.jar:2.4]          at org.apache.velocity.runtime.parser.StandardParser.jj_2_3(StandardParser.java:3886) ~[velocity-engine-core-2.4.jar:2.4]          at org.apache.velocity.runtime.parser.StandardParser.Statement(StandardParser.java:654) ~[velocity-engine-core-2.4.jar:2.4]          at org.apache.velocity.runtime.parser.StandardParser.process(StandardParser.java:495) ~[velocity-engine-core-2.4.jar:2.4]          at org.apache.velocity.runtime.parser.StandardParser.parse(StandardParser.java:184) [velocity-engine-core-2.4.jar:2.4]          at org.apache.velocity.runtime.RuntimeInstance.parse(RuntimeInstance.java:1344) [velocity-engine-core-2.4.jar:2.4]          at org.apache.velocity.Template.process(Template.java:145) [velocity-engine-core-2.4.jar:2.4]          at org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:429) [velocity-engine-core-2.4.jar:2.4]          at org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:346) [velocity-engine-core-2.4.jar:2.4]          at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1694) [velocity-engine-core-2.4.jar:2.4]          at org.apache.velocity.app.VelocityEngine.mergeTemplate(VelocityEngine.java:284) [velocity-engine-core-2.4.jar:2.4]

Environment that throws the exception:
Linux / Tomcat

Server version name:   Apache Tomcat/9.0.104
Server built:          Apr 4 2025 12:32:55 UTC
Server version number: 9.0.104.0
OS Name:               Linux
OS Version:            4.14.355-277.647.amzn2.x86_64
Architecture:          amd64
Java Home: /usr/lib/jvm/java-11-amazon-corretto.x86_64
JVM Version:           11.0.27+6-LTS
JVM Vendor:            Amazon.com Inc.


Environment that does not throw the exception:
Windows / TomEE

INFO: Server version name:   Apache Tomcat (TomEE)/9.0.82 (8.0.16)
INFO: Server built:          Oct 11 2023 13:15:08 UTC
INFO: Server version number: 9.0.82.0
INFO: OS Name:               Windows 11
INFO: OS Version:            10.0
INFO: Architecture:          amd64
INFO: Java Home:             C:\Program Files\Amazon Corretto\jdk11.0.26_4
INFO: JVM Version:           11.0.26+4-LTS
INFO: JVM Vendor:            Amazon.com Inc.

Robert Kish (Consultant) | Application Developer, IT Application Services | NJ Dept. of Agriculture

CONFIDENTIALITY NOTICE: The information contained in this communication from New Jersey Department of Agriculture is privileged and confidential and is intended for the sole use of the persons or entities who are the addressees. If you are not an intended recipient of this email, the dissemination, distribution, copying or use of the information it contains is strictly prohibited. If you have received this communication in error, please immediately contact the sender of this email message to arrange for the return of this information.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@velocity.apache.org
For additional commands, e-mail: user-h...@velocity.apache.org

Reply via email to