我正在遵循docs上的示例,并停留在调用Java方法上。当我跑步时
[:find ?k ?v
:where [(System/getProperties) [[?k ?v]]]]
我得到一个 FileNotFoundException无法在类路径上找到System__init.class或System.clj。 clojure.lang.RT.load(RT.java:463)。
当我在REPL中运行(System/getProperties)
时,我会得到结果。
{"java.runtime.name" "OpenJDK Runtime Environment",
"sun.boot.library.path" "/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/amd64",
"java.vm.version" "25.181-b13",
...}
我尝试使用完全合格的类名(java.lang.System/getProperties)
运行代码段,但仍然出现错误。
(d/q '[:find ?k ?v
:where
[(java.lang.System/getProperties) [[?k ?v]]]
[(.endsWith ^String ?k "version")]])
Clojure版本: 1.9.0
基本版本: [com.datomic/datomic-pro "0.9.5703"]
(本地)
有什么想法我需要做些什么才能使它起作用?我正在使用IntelliJ开发和运行REPL。
答案 0 :(得分:0)
Stuart Halloway指出,他认为这是在类路径功能支持下引入的错误。 Datomic错误地将该符号视为Clojure名称。
解决方法是给它一个Clojure符号以供使用。例如:
(defn get-props [] (System/getProperties))
(d/q '[:find ?k ?v
:where [(user/get-props) [[?k ?v]]]])