Java 没有方法的签名:build\u hash$\u copyrursely\u closure3.doCall()适用于参数类型
我真的被这个错误缠住了。这对我来说毫无意义。为什么参数类型Java 没有方法的签名:build\u hash$\u copyrursely\u closure3.doCall()适用于参数类型,java,groovy,Java,Groovy,我真的被这个错误缠住了。这对我来说毫无意义。为什么参数类型UnixPath,null?我试着打印tempDir变量,结果正如预期的那样-e.I.Path对象具有正确的路径 有什么想法吗 没有方法的签名:build_76p6jmah0vklon2l29au5dqlcr$\u copyrursely_closure3.doCall()适用于参数类型:(sun.nio.fs.UnixPath,null)值:[generic/bundle,] 可能的解决方案:doCall()、doCall(java.l
UnixPath,null
?我试着打印tempDir
变量,结果正如预期的那样-e.I.Path对象具有正确的路径
有什么想法吗
没有方法的签名:build_76p6jmah0vklon2l29au5dqlcr$\u copyrursely_closure3.doCall()适用于参数类型:(sun.nio.fs.UnixPath,null)值:[generic/bundle,]
可能的解决方案:doCall()、doCall(java.lang.Object)、findAll()、findAll()
您面临的问题是由于
FileVisitor
对象没有正确构造。方法visitFileFailed
和postVisitDirectory
需要两个参数,但您没有提供任何参数。解决问题后,copyrecursive
的正确方法定义为:
void copyRecursively(Path sourceDir, Path destinationDir) {
FileVisitor visitor =[
preVisitDirectory : { Path filePath, BasicFileAttributes attrs ->
Path newDirectory = destinationDir.resolve(sourceDir.relativize(filePath))
Files.copy(filePath, newDirectory, StandardCopyOption.COPY_ATTRIBUTES, StandardCopyOption.REPLACE_EXISTING)
return FileVisitResult.CONTINUE
},
visitFile : { Path filePath, BasicFileAttributes attrs ->
Files.copy(filePath, destinationDir.resolve(sourceDir.relativize(filePath)), StandardCopyOption.COPY_ATTRIBUTES, StandardCopyOption.REPLACE_EXISTING)
return FileVisitResult.CONTINUE
},
visitFileFailed : { file, IOException ex -> return FileVisitResult.CONTINUE },
postVisitDirectory: { dir, IOException ex -> return FileVisitResult.CONTINUE }
] as FileVisitor
Files.walkFileTree(sourceDir, [FileVisitOption.FOLLOW_LINKS] as Set, Integer.MAX_VALUE, visitor)
}
copyrecursely
方法是否在同一范围/脚本中定义?它是。我也有其他类似的方法,它们也很有效
void copyRecursively(Path sourceDir, Path destinationDir) {
FileVisitor visitor =[
preVisitDirectory : { Path filePath, BasicFileAttributes attrs ->
Path newDirectory = destinationDir.resolve(sourceDir.relativize(filePath))
Files.copy(filePath, newDirectory, StandardCopyOption.COPY_ATTRIBUTES, StandardCopyOption.REPLACE_EXISTING)
return FileVisitResult.CONTINUE
},
visitFile : { Path filePath, BasicFileAttributes attrs ->
Files.copy(filePath, destinationDir.resolve(sourceDir.relativize(filePath)), StandardCopyOption.COPY_ATTRIBUTES, StandardCopyOption.REPLACE_EXISTING)
return FileVisitResult.CONTINUE
},
visitFileFailed : { file, IOException ex -> return FileVisitResult.CONTINUE },
postVisitDirectory: { dir, IOException ex -> return FileVisitResult.CONTINUE }
] as FileVisitor
Files.walkFileTree(sourceDir, [FileVisitOption.FOLLOW_LINKS] as Set, Integer.MAX_VALUE, visitor)
}