0

我在我的 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;

这怎么可能?我应该怎么做才能解决这个问题??过去我在服务构建器(LocalServiceImpl 类)中添加了其他功能,没有任何麻烦!

谢谢你的帮助,奥里奥尔

4

2 回答 2

1

正如您评论说重启有帮助,问题可能是一些旧代码以某种方式被缓存,可能是在运行的调试器进程中,在重建服务时没有拾取由 servicebuilder 引起的类更改。

事后很难说 - 如果你能重现这个,了解情况会很有趣,例如 IDE、测试设置等。否则,恐怕你将不得不将其视为故障矩阵。

于 2013-05-07T20:16:00.180 回答
-1
 Goto service.xml--->select Overview--->In the right corner build services option is there--->click that

在此处输入图像描述

如果在 service.xml 中看到任何更改,只需按照上面的屏幕进行操作,我提到的内容将很容易纠正。在他的声明中,他提到就像在服务构建器中所做的一些更改,这就是我给出解决方案的原因

于 2013-04-25T11:00:00.510 回答