1

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

1 回答 1

3

事实证明,要调用 java 可变参数方法,您必须将可变参数部分作为数组显式传递,即使您不关心它。(请参阅问题Java 互操作 — 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>}
于 2013-08-29T02:27:35.137 回答