在 Datomic 查询中使用 System/getProperties 会抛出 FileNotFoundException
Using System/getProperties in a Datomic query throws a FileNotFoundException
我正在按照 docs 上的示例进行操作,但卡在了 调用 Java 方法 。当我运行
[:find ?k ?v
:where [(System/getProperties) [[?k ?v]]]]
我收到 FileNotFoundException 无法在 class 路径上找到 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",
...}
我尝试 运行 使用完全限定的 class 名称 (java.lang.System/getProperties)
连接代码段,但我仍然遇到错误。
(d/q '[:find ?k ?v
:where
[(java.lang.System/getProperties) [[?k ?v]]]
[(.endsWith ^String ?k "version")]])
Clojure 版本: 1.9.0
Datomic 版本: [com.datomic/datomic-pro "0.9.5703"]
(本地)
有什么想法可以使它正常工作吗?我正在使用 IntelliJ 开发和 运行ning REPL。
Stuart Halloway 指出,他认为这是类路径功能支持引入的错误。 Datomic 将该符号错误地视为 Clojure 名称。
解决方法是给它一个 Clojure 符号来使用。例如:
(defn get-props [] (System/getProperties))
(d/q '[:find ?k ?v
:where [(user/get-props) [[?k ?v]]]])
我正在按照 docs 上的示例进行操作,但卡在了 调用 Java 方法 。当我运行
[:find ?k ?v
:where [(System/getProperties) [[?k ?v]]]]
我收到 FileNotFoundException 无法在 class 路径上找到 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",
...}
我尝试 运行 使用完全限定的 class 名称 (java.lang.System/getProperties)
连接代码段,但我仍然遇到错误。
(d/q '[:find ?k ?v
:where
[(java.lang.System/getProperties) [[?k ?v]]]
[(.endsWith ^String ?k "version")]])
Clojure 版本: 1.9.0
Datomic 版本: [com.datomic/datomic-pro "0.9.5703"]
(本地)
有什么想法可以使它正常工作吗?我正在使用 IntelliJ 开发和 运行ning REPL。
Stuart Halloway 指出,他认为这是类路径功能支持引入的错误。 Datomic 将该符号错误地视为 Clojure 名称。
解决方法是给它一个 Clojure 符号来使用。例如:
(defn get-props [] (System/getProperties))
(d/q '[:find ?k ?v
:where [(user/get-props) [[?k ?v]]]])