java - 使用 groovy-maven-plugin 时,Groovy 不会将闭包转换为 BiPredicate
问题描述
我在使用 groovy 代码时遇到了麻烦(我第一次尝试没有明确的闭包参数类型):
Files.find(path, 4, { Path target, BasicFileAttributes attr ->
def file = target.fileName
file.toString().endsWith(".xml") && !file.toString().startsWith("_")
},
new FileVisitOption[0]
).collect(Collectors.toList())
Groovy 编译器 (2.4.15) 失败并显示:
No signature of method: static java.nio.file.Files.find() is applicable for argument types: (sun.nio.fs.UnixPath, java.lang.Integer, upgrade_bundles$_items_closure3, [Ljava.nio.file.FileVisitOption;) values: [/home/kkrason/dev/tpc2/zerocracy/farm/src/test/resources/com/zerocracy/bundles/understands_bug_label, ...]
Possible solutions: find(), find(java.nio.file.Path, int, java.util.function.BiPredicate, [Ljava.nio.file.FileVisitOption;), findAll(), any(), find(groovy.lang.Closure), wait()
为什么编译器不将闭包转换为BiPredicate
? 只有一种find
方法,所以我不明白为什么会有冲突。
编辑:上面的代码是使用 maven 执行的:
org.codehaus.gmaven groovy-maven-plugin 2.1 upgrade-bundles process-test-resources 执行 compile ${project.basedir}/upgrade_bundles.groovy
在项目依赖项中,我有:
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.4.15</version>
</dependency>
我试图将此依赖项添加到 groovy-maven-plugin,但后来我得到:
[ERROR] Failed to execute goal org.codehaus.gmaven:groovy-maven-plugin:2.1:execute (upgrade-bundles) on project farm: Execution upgrade-bundles of goal org.codehaus.gmaven:groovy-maven-plugin:2.1:execute failed: A required class was missing while executing org.codehaus.gmaven:groovy-maven-plugin:2.1:execute: net/sf/saxon/event/Receiver
[ERROR] -----------------------------------------------------
[ERROR] realm = plugin>org.codehaus.gmaven:groovy-maven-plugin:2.1
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/home/kkrason/.m2/repository/org/codehaus/gmaven/groovy-maven-plugin/2.1/groovy-maven-plugin-2.1.jar
[ERROR] urls[1] = file:/home/kkrason/.m2/repository/org/codehaus/groovy/groovy-all/2.4.15/groovy-all-2.4.15.jar
[ERROR] urls[2] = file:/home/kkrason/.m2/repository/org/sonatype/gossip/gossip-slf4j/1.8/gossip-slf4j-1.8.jar
[ERROR] urls[3] = file:/home/kkrason/.m2/repository/org/sonatype/gossip/gossip-core/1.8/gossip-core-1.8.jar
[ERROR] urls[4] = file:/home/kkrason/.m2/repository/org/sonatype/gossip/gossip-bootstrap/1.8/gossip-bootstrap-1.8.jar
[ERROR] urls[5] = file:/home/kkrason/.m2/repository/com/google/guava/guava/14.0.1/guava-14.0.1.jar
[ERROR] urls[6] = file:/home/kkrason/.m2/repository/com/google/code/findbugs/jsr305/2.0.1/jsr305-2.0.1.jar
[ERROR] urls[7] = file:/home/kkrason/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.16/plexus-interpolation-1.16.jar
[ERROR] urls[8] = file:/home/kkrason/.m2/repository/org/eclipse/aether/aether-util/0.9.0.M2/aether-util-0.9.0.M2.jar
[ERROR] urls[9] = file:/home/kkrason/.m2/repository/org/codehaus/gmaven/gmaven-adapter-api/2.1/gmaven-adapter-api-2.1.jar
[ERROR] urls[10] = file:/home/kkrason/.m2/repository/org/codehaus/gmaven/gmaven-adapter-impl/2.1/gmaven-adapter-impl-2.1.jar
[ERROR] urls[11] = file:/home/kkrason/.m2/repository/org/apache/ant/ant/1.8.4/ant-1.8.4.jar
[ERROR] urls[12] = file:/home/kkrason/.m2/repository/org/apache/ant/ant-launcher/1.8.4/ant-launcher-1.8.4.jar
[ERROR] urls[13] = file:/home/kkrason/.m2/repository/jline/jline/1.0/jline-1.0.jar
[ERROR] urls[14] = file:/home/kkrason/.m2/repository/org/codehaus/plexus/plexus-utils/1.1/plexus-utils-1.1.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import from realm ClassRealm[project>com.zerocracy:farm:0.30.7, parent: ClassRealm[maven.api, parent: null]]]
解决方案
推荐阅读
- python - 无法导入名称“string_int_label_map_pb2”
- mysql - 保护 Compute Engine 上的 MySQL 服务器
- c# - .Net framework 4.8 User Secret - 在 Membership Provider 中访问 ConnectionString
- powershell - Powershell 5 : Cannot convert value To System.String
- r - R 显示“r 遇到致命错误,会话已终止”
- sql - 验证逗号分隔字段 PLSQL 的规则
- python-3.x - 在 Windows10 64bit 中安装 graphviz
- c++ - 强制对 fmt 中的 std::string 进行 UTF-8 处理
- perl - 解析文件并在每次出现后插入新行
- javascript - 打字稿过滤器并返回单键