我在我的一个 Grails 项目中使用 Groovy Spreadsheet Builder将一些数据导出为 Excel 文件。
gradle assemble在我创建一个可运行的 jar(使用)并使用它之前,一切都很好。
我在这样的服务中使用构建器:
class ExcelService {
...
void export(OutputStream outputStream) {
...
PoiSpreadsheetBuilder.create(outputStream).build {
apply ExcelStylesheet
...
}
}
...
}
当我尝试从使用生成的 jar 开始的应用程序中导出数据时,我将得到以下信息MissingMethodException:
groovy.lang.MissingMethodException: No signature of method: my.package.ExcelService.apply() is applicable for argument types: (java.lang.Class)
SpreadsheetBuilder 的 (Java) 接口如下所示:
public interface SpreadsheetBuilder {
void build(@DelegatesTo(strategy = Closure.DELEGATE_FIRST, value = WorkbookDefinition.class) @ClosureParams(value = FromString.class, options = "builders.dsl.spreadsheet.builder.api.WorkbookDefinition") Configurer<WorkbookDefinition> workbookDefinition);
}
在调试代码和 jar 的执行时,我在单步invokeMethod()执行ClosureMetaClass.
在closure.getResolveStrategy();工作版本中调用Closure.DELEGATE_FIRST时将返回。调试jar,结果会0因为MissingMethodException解析策略错误而导致稍后抛出。
目前我不知道如何解决这个问题。
这种行为的原因是/可能是什么?我能做些什么来解决这个问题?
我将 Grails 3.3.8 与 Java OpenJDK 1.8.0_192 一起使用。
弑天下
30秒到达战场
相关分类