有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

复杂事件处理Esper部署错误:静态方法的返回类型无效,应为Java类

我的应用程序配置并部署了一个esper引擎,该引擎解析作为字符串存储在MySQL数据库中的epl模块。除了我尝试从epl模块调用静态方法外,其他方法都可以工作。部署引擎时出现以下错误:DeploymentActionException:在表达式“select…”中的模块“MyModule”中部署失败:启动语句时出错:类“MyClass”的静态方法“myMethod”的返回类型无效,应为Java类

方法如下:

public static String myMethod() {
    String symbol = "GOOG";
    logger.info("Hello From EPL");
    return symbol;
}

以下是引擎配置和模块部署:

Configuration configuration = new Configuration();
        configuration.addEventType("MyEvent", MyEvent.class);
        configuration.addImport(com.tp.main.MyClass.class);
        epService = EPServiceProviderManager.getProvider("Service", configuration);
        EPDeploymentAdmin deploymentAdmin = epService.getEPAdministrator().getDeploymentAdmin();
        Module module = deploymentAdmin.parse(epl);
        String moduleId = deploymentAdmin.add(module);
        deploymentAdmin.deploy(moduleId, null);

以下是epl模块:

module MyModule; select propertyA, propertyB from MyEvent as propertyA unidirectional, method:MyClass.myMethod as propertyB

MyEvent有一个返回字符串的propertyA的getter

我已经反复阅读了文档。看来一切都会好起来的。我在网上找到了一些例子,进一步说明一切都很好。但我无法克服这个错误

我已经尝试将导入移动到epl模块。我尝试过从POJO事件更改为映射事件,然后再更改。我已经尝试在epl模块中创建模式,并使用运行时API配置事件类型,然后再返回

如果我执行此方法调用,则所有操作与epl模块中的其他语句(未显示)一样有效

我错过了什么


共 (1) 个答案

  1. # 1 楼答案

    “string”不是POJO,它实际上是一个基本类型。在from子句中,它应该返回事件类型或POJO,而基元类型不可能是值,因为它没有任何属性

    public class Result {
      String result;
    }
    
    public static Result myMethod() {
      String symbol = "GOOG";
      logger.info("Hello From EPL");
      return symbol;
    }