我在使用 Freemarker 和我在 6.2 上没有使用的类加载器时遇到了一个奇怪的问题。基本上,模板顶部有一个使用 Oauth 的小逻辑。这个用得很好,我看不出有什么问题。我尝试在任何地方放置 Scribe 的变体,甚至删除 ROOT 中的那个。
奇怪的是代码在抛出异常之前成功调用了一些方法,我想这不是类加载器问题,而是解包操作的问题。该功能有什么变化吗?
代码:
${callbackParameters.add(TrueNTHOAuthConstants.REDIRECT, portalUtil.getCurrentCompleteURL(request))}
<#assign trueNTHConnectLoginURL = trueNTHConnect.getAuthorizationUrl(companyId,1, callbackParameters) /> (Exception at this line)
FreeMarker template error:
No compatible overloaded variation was found; can't convert (unwrap) the 3rd argument to the desired Java type.
The FTL type of the argument values were: number (wrapper: f.t.SimpleNumber), number (wrapper: f.t.SimpleNumber), extended_hash+string (org.scribe.model.ParameterList wrapped into f.e.b.StringModel).
**The matching overload was searched among these members**:
com.sun.proxy.$Proxy799.getAuthorizationUrl(long),
com.sun.proxy.$Proxy799.getAuthorizationUrl(long, int, org.scribe.model.ParameterList, org.scribe.model.ParameterList),
com.sun.proxy.$Proxy799.getAuthorizationUrl(long, int, org.scribe.model.ParameterList)
我刚刚提到了类加载器,因为我必须处理几个 ClassNotFoundException 或未找到的类定义才能到达这一点。由于库复制,这是某种预期的(不可预测的行为)。