我在我的Service Builder上添加了一个新方法:
public IRRule ruleCreation()
throws SystemException, PortalException {
IRRule rule = new IRRuleImpl();
return rule;
}
从portlet类中识别该方法(未显示错误):
public class RulePortlet extends MVCPortlet{
public void addRule(ActionRequest request, ActionResponse response)
throws Exception {
ThemeDisplay themeDisplay =
(ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY);
IRRule rule = IRRuleLocalServiceUtil.ruleCreation(); // This is The Method!!!!
rule.setCompanyId(themeDisplay.getCompanyId());
rule.setGroupId(themeDisplay.getScopeGroupId());
rule.setRuleName(ParamUtil.getString(request, "ruleName"));
rule.setRuleDescription(ParamUtil.getString(request, "ruleDescription"));
rule.setRuleFile(ParamUtil.getString(request, "ruleFile"));
ArrayList<String> errors = new ArrayList<String>();
if (RuleValidator.validateRule(rule, errors)) {
IRRuleLocalServiceUtil.addRule(rule,
themeDisplay.getUserId());
SessionMessages.add(request, "product-saved-successfully");
} else {
SessionErrors.add(request, "fields-required");
}
}
...
但是在测试这个函数的时候我有这个错误抛出控制台......
java.lang.NoSuchMethodError: com.ent.oriol.inputrules.service.IRRuleLocalServiceUtil.ruleCreation()Lcom/ent/oriol/inputrules/model/IRRule;
怎么可能?我应该怎么做才能解决这个问题?在过去,我将其他功能添加到服务构建器(本地服务Impl类)而没有麻烦!
谢谢你的帮助,Oriol
正如你评论重新启动有帮助,问题可能是一些旧的代码以某种方式缓存,可能是在运行的调试器进程中,在服务重建时没有获取由servicebuilder引起的类更改。
事后很难说出这一点 - 如果你可以重现这一点,那么了解情况会很有趣,例如: IDE,测试设置等。否则,我担心,你必须把它看作矩阵中的一个小故障。
Goto service.xml--->select Overview--->In the right corner build services option is there--->click that
如果在service.xml中看到的任何更改只是按照上面的屏幕,我提到你将很容易纠正。在他的声明中,他提到了服务构建器中的一些更改,这就是我给出解决方案的原因