Hi all,
We have written a couple of Jira plugins (we're on Jira 8.11.1) and are getting tons of these messages in the log when the plugins are enabled:
2021-06-11 08:27:15,001-0400 http-nio-2990-exec-3 ERROR - [c.atlassian.velocity.DefaultVelocityManager] Exception getting message body from Velocity: org.apache.velocity.exception.ParseErrorException: Lexical error: org.apache.velocity.runtime.parser.TokenMgrError: Lexical error at line 1, column 2. Encountered: <EOF> after : ""
org.apache.velocity.exception.ParseErrorException: Lexical error: org.apache.velocity.runtime.parser.TokenMgrError: Lexical error at line 1, column 2. Encountered: <EOF> after : ""
at org.apache.velocity.runtime.RuntimeInstance.evaluate(RuntimeInstance.java:1202)
...
We have been searching for the cause for two weeks now and haven't been able to locate what file (vm, js, css) that it is complaining about. I downloaded a free VM parsing tool and it identified no errors in any of the .vm files. I have tried enabling DEBUG logging on numerous classes listed in the stack trace but none of them will tell me which specific file, or even text (if I knew the text I can figure out the file) it is complaining about. If I remove every single one of our js, css and png files from the plugin jar, we don't get the parsing error, we just get errors that the js files can't be found to be loaded - obviously expected. But if I put back even ONE of the js files, or any of the png files, the error immediately comes back. The plugin is being built using Maven and the resources are all being encoded with UTF-8. I've even tried encoding the resources as ASCII and ISO-8559-1 with no luck. Has anybody else run into this? Any suggestions on how to narrow down exactly which of our files Velocity doesn't like?
So after 17 months, I finally tracked this down.
Our Jira plugin defines a new menu with two sub-menus that we place in the system navigation bar. And the top-most main menu was defined like this:
<!-- defines the link on the top-level section -->
<web-item key="tempo_report_links_link" name="Tempo Reporting Top Navigation Menu" section="system.top.navigation.bar" weight="47">
<label>Tempo Reporting</label>
<link linkId="tempo_report_links_link">#</link>
</web-item>
The documentation for web-item indicates that <link> is required and is parsed by Velocity. And when Velocity parses that link, it finds just # - not #if or #foreach or #end, just #. And that is an error according to Velocity. So I fixed it with
<!-- defines the link on the top-level section -->
<web-item key="tempo_report_links_link" name="Tempo Reporting Top Navigation Menu" section="system.top.navigation.bar" weight="47">
<label>Tempo Reporting</label>
<link linkId="tempo_report_links_link"></link>
</web-item>
Hi @Greg Fischer ,
you could use
<link linkId="tempo_report_links_link">##</link>
as well than it is seen as a comment.
Cheers
Heiko
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.