我想调用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}
答案 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>}