调用Files / readAttributes失败,出现“IllegalArgumentException:No matching method”

时间:2013-08-29 02:10:17

标签: clojure

我想调用java.nio.file.Files / readAttributes,但这样做总是会失败 No matching method 。例如:

user=> (java.nio.file.Files/readAttributes (-> "/etc/passwd" clojure.java.io/file .toPath) "posix:group")
CompilerException java.lang.IllegalArgumentException: No matching method: readAttributes, compiling:(NO_SOURCE_PATH:1:1) 

user=> (java.lang.System/getProperty "java.version")
"1.7.0_25"

对于健全性检查,从scala repl执行相同的工作正常:

scala> java.nio.file.Files.readAttributes((new java.io.File("/etc/passwd")).toPath, "posix:group")
res11: java.util.Map[String,Object] = {group=root}

1 个答案:

答案 0 :(得分:3)

事实证明,要调用java variadic方法,你必须明确地将vararg部分作为数组传递,即使你不关心它。 (参见问题Java Interop — Netty + Clojure

以下作品:

user=> (java.nio.file.Files/readAttributes (-> "/etc/passwd" clojure.java.io/file .toPath) "posix:group" (into-array java.nio.file.LinkOption []))
{"group" #<Group root>}