首页 > 解决方案 > 如何修复 groovy.lang.MissingMethodException:没有方法签名:java.util.ArrayList.get() 适用于参数类型:() 值:[]

问题描述

我试图在 groovy 中使用这种方法,

groupedDocs = reader.selectGroupedDocs(last_update_date.toString()).get();

这是我的“selectGroupedDocs”方法的java代码部分,

private List<Map<String, String>> selectGroupedDocs(String lastUpdateDate) {
            logger.warn("START :: selectGroupedDocs");
            String query = prepareQuery(SELECT_ALL_GROUPED_DOCES_BY_DATE, lastUpdateDate);

            DataStoreQuery.QueryResult result = dataStoreQuery.executeQuery(CMT_GROUPED_DOCS, query);

            List<Map<String, String>> resultMaps = result.getSelectResultAsMapRows().orElse(new ArrayList<>());
            logger.warn("Result Maps :: " + resultMaps);

            logger.warn("END :: selectGroupedDocs");

            return resultMaps;
        }

当我运行它时,我收到以下错误,

groovy.lang.MissingMethodException: No signature of method: java.util.ArrayList.get() is applicable for argument types: () values: []
Possible solutions: get(int), get(int), set(int, java.lang.Object), set(int, java.lang.Object), grep(), grep()
    at org.webharvest.runtime.scripting.GroovyScriptEngine.eval(GroovyScriptEngine.java:138)
    at org.webharvest.runtime.processors.ScriptProcessor.execute(ScriptProcessor.java:74)
    at org.webharvest.runtime.processors.BaseProcessor.run(BaseProcessor.java:127)
    at org.webharvest.runtime.Scraper.execute(Scraper.java:169)
    at org.webharvest.runtime.Scraper.execute(Scraper.java:182)

我究竟做错了什么?

标签: javagroovywebharvest

解决方案


如果您希望将列表分配给 groupedDocs,请从下面的行中删除.get()

groupedDocs = reader.selectGroupedDocs(last_update_date.toString()).get();

列表中的 get 方法需要一个参数。如果您尝试将列表中的特定值分配给 groupedDocs,则需要在 get 方法中传递一个索引才能检索它。

例如。 groupedDocs = reader.selectGroupedDocs(last_update_date.toString()).get(1);


推荐阅读