Legacy Knowledge Base
Published Sep. 10, 2025

Multiple compatible overloaded variations were found with the same priority on Liferay Layout Templates deployment

Written By

Alfonso Crisci

How To articles are not official guidelines or officially supported documentation. They are community-contributed content and may not always reflect the latest updates to Liferay DXP. We welcome your feedback to improve How To articles!

While we make every effort to ensure this Knowledge Base is accurate, it may not always reflect the most recent updates or official guidelines.We appreciate your understanding and encourage you to reach out with any feedback or concerns.

Legacy Article

You are viewing an article from our legacy "FastTrack" publication program, made available for informational purposes. Articles in this program were published without a requirement for independent editing or verification and are provided"as is" without guarantee.

Before using any information from this article, independently verify its suitability for your situation and project.

Issue

  • When deploying layout templates with Freemarker code e.g. like the below:

    <span>${languageUtil.get(locale, "read-more")}</span>

    <span>${sessionClicks.get(request, "test", "My Test")}</span>

    A stacktrace will appear in the server logs:
    INFO [fileinstall-/liferay-dxp-7.1/osgi/war][BaseAutoDeployListener:50] Layout templates for /liferay-dxp-7.1/tomcat-9.0.6/temp/20191112101935419XQVHYTZK/my-layout-template-project.war copied successfully
    ERROR [Refresh Thread: Equinox Container: 8b19cc3b-1ff6-40e3-aebc-7c036213f440][runtime:60] Error executing FreeMarker template
    FreeMarker template error:
    Multiple compatible overloaded variations were found with the same priority.
    The FTL type of the argument values were: Null, string (wrapper: f.t.SimpleScalar).
    The Java type of the argument values were: Null, String.
    The matching overload was searched among these members:
    com.liferay.portal.language.LanguageImpl.get(ResourceBundle, String),
    com.liferay.portal.language.LanguageImpl.get(javax.servlet.http.HttpServletRequest, String, String),
    com.liferay.portal.language.LanguageImpl.get(ResourceBundle, String, String),
    com.liferay.portal.language.LanguageImpl.get(javax.servlet.http.HttpServletRequest, ResourceBundle, String),
    com.liferay.portal.language.LanguageImpl.get(javax.servlet.http.HttpServletRequest, ResourceBundle, String, String),
    com.liferay.portal.language.LanguageImpl.get(Locale, String),
    com.liferay.portal.language.LanguageImpl.get(javax.servlet.http.HttpServletRequest, String),
    com.liferay.portal.language.LanguageImpl.get(Locale, String, String)

    ----
    FTL stack trace ("~" means nesting-related):
    - Failed at: ${languageUtil.get(locale, "read-more")} [in template "null_CUSTOM_my-layout-template-project" at line 9, column 93]
    ----

    Java stack trace (for programmers):
    ----
    freemarker.core._TemplateModelException: [... Exception message was already printed; see it above ...]
    at freemarker.ext.beans.OverloadedMethods.getMemberAndArguments(OverloadedMethods.java:102)
    at freemarker.ext.beans.OverloadedMethodsModel.exec(OverloadedMethodsModel.java:60)
    at freemarker.core.MethodCall._eval(MethodCall.java:62)
    at freemarker.core.Expression.eval(Expression.java:78)
    at freemarker.core.Expression.evalAndCoerceToString(Expression.java:82)
    at freemarker.core.DollarVariable.accept(DollarVariable.java:41)
    at freemarker.core.Environment.visit(Environment.java:324)
    at freemarker.core.MixedContent.accept(MixedContent.java:54)
    at freemarker.core.Environment.visit(Environment.java:324)
    at freemarker.core.Environment.process(Environment.java:302)
    at freemarker.template.Template.process(Template.java:325)
    at com.liferay.portal.template.freemarker.internal.FreeMarkerTemplate.processTemplate(FreeMarkerTemplate.java:128)
    at com.liferay.portal.template.AbstractSingleResourceTemplate.processTemplate(AbstractSingleResourceTemplate.java:96)
    [...]
    Caused by: freemarker.core._TemplateModelException: Multiple compatible overloaded variations were found with the same priority._The FTL type of the argument values were: Null, string (wrapper: f.t.SimpleScalar)._The Java type of the argument values were: Null, String._The matching overload was searched among these members:_ com.liferay.portal.language.LanguageImpl.get(ResourceBundle, String),_ com.liferay.portal.language.LanguageImpl.get(javax.servlet.http.HttpServletRequest, String, String),_ com.liferay.portal.language.LanguageImpl.get(ResourceBundle, String, String),_ com.liferay.portal.language.LanguageImpl.get(javax.servlet.http.HttpServletRequest, ResourceBundle, String),_ com.liferay.portal.language.LanguageImpl.get(javax.servlet.http.HttpServletRequest, ResourceBundle, String, String),_ com.liferay.portal.language.LanguageImpl.get(Locale, String),_ com.liferay.portal.language.LanguageImpl.get(javax.servlet.http.HttpServletRequest, String),_ com.liferay.portal.language.LanguageImpl.get(Locale, String, String)__----_FTL stack trace ("~" means nesting-related):_ - Failed at: ${languageUtil.get(locale, "read-more")} [in template "null_CUSTOM_my-layout-template-project" at line 9, column 93]_---- [Sanitized]
    at freemarker.ext.beans.OverloadedMethods.getMemberAndArguments(OverloadedMethods.java:102)
    at freemarker.ext.beans.OverloadedMethodsModel.exec(OverloadedMethodsModel.java:60)
    at freemarker.core.MethodCall._eval(MethodCall.java:62)
    at freemarker.core.Expression.eval(Expression.java:78)
    at freemarker.core.Expression.evalAndCoerceToString(Expression.java:82)
    at freemarker.core.DollarVariable.accept(DollarVariable.java:41)
    at freemarker.core.Environment.visit(Environment.java:324)
    at freemarker.core.MixedContent.accept(MixedContent.java:54)
    at freemarker.core.Environment.visit(Environment.java:324)
    at freemarker.core.Environment.process(Environment.java:302)
    at freemarker.template.Template.process(Template.java:325)
    at com.liferay.portal.template.freemarker.internal.FreeMarkerTemplate.processTemplate(FreeMarkerTemplate.java:128)
    at com.liferay.portal.template.AbstractSingleResourceTemplate.processTemplate(AbstractSingleResourceTemplate.java:96)
    ... 71 more
    INFO [Refresh Thread: Equinox Container: 8b19cc3b-1ff6-40e3-aebc-7c036213f440][LayoutTemplateHotDeployListener:105] 1 layout template for my-layout-template-project is available for use
    INFO [Refresh Thread: Equinox Container: 8b19cc3b-1ff6-40e3-aebc-7c036213f440][BundleStartStopLogger:39] STARTED my-layout-template-project_1.0.0 [999]

Environment

  • Liferay DXP 7.0+

Resolution

  • The error is being thrown as the custom template is trying to utilize the variable while it's null.

    One simple way to resolve this would be to account for such case, e.g.:
    <#if request??>
    <#assign myVar = sessionClicks.get(request, "test", "My Test") />
    <#else>
    <#assign myVar = "" />
    </#if>

    <div class="my-liferay-layout" id="main-content" role="main">
    <div class="portlet-layout row">
    <div class="col-md-12 portlet-column portlet-column-only" id="column-1">
    ${processor.processColumn("column-1", "portlet-column-content portlet-column-content-only")}
    </div>
    <span>${myVar}</span>
    </div>
    </div>

Additional Information

Did this article resolve your issue ?

Legacy Knowledge Base