在 Clojure 中使用 lmdbjava
Using lmdbjava in Clojure
我正在尝试在 Clojure 中使用 lmdbjava,但我很吃力。
(import '[org.lmdbjava Env])
(def path (clojure.java.io/file "/tmp"))
(.open (.setMaxDbs (.setMapSize (Env/create) 10485760) 1) path)
(p.s。我知道有更简洁的方法。这只是为了测试目的。)
这是错误:
IllegalArgumentException No matching method found: open for class java.lang.Class clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:53)
我也试过这个:
(.open (.setMaxDbs (.setMapSize (Env/create) 10485760) 1) path org.lmdbjava.EnvFlags/MDB_NOLOCK)
还有这个:
(.. (Env/create) (setMapSize 10485760) (setMaxDbs 1) (open path org.lmdbjava.EnvFlags/MDB_NOLOCK))
我得到这个错误:
ClassCastException org.lmdbjava.EnvFlags (in module: Unnamed Module) cannot be cast to [Lorg.lmdbjava.EnvFlags; (in module: Unnamed Module) user/eval1339 (form-init2868059116743223586.clj:1)
我意识到我可能在做一些愚蠢的事情,因为我是 Java 和 Clojure 的新手。任何帮助将不胜感激!
顺便说一句,这是我正在关注的教程:
https://github.com/lmdbjava/lmdbjava/blob/master/src/test/java/org/lmdbjava/TutorialTest.java
谢谢!
来自Env.Builderclass的签名:
Env<T> open(File path, int mode, EnvFlags... flags)
您还必须提供一个 EnvFlags varargs 参数。这就是你在 Clojure 中的做法:
(.open (.setMaxDbs (.setMapSize (Env/create) 10485760) 1) path (into-array org.lmdbjava.EnvFlags []))
我正在尝试在 Clojure 中使用 lmdbjava,但我很吃力。
(import '[org.lmdbjava Env])
(def path (clojure.java.io/file "/tmp"))
(.open (.setMaxDbs (.setMapSize (Env/create) 10485760) 1) path)
(p.s。我知道有更简洁的方法。这只是为了测试目的。)
这是错误:
IllegalArgumentException No matching method found: open for class java.lang.Class clojure.lang.Reflector.invokeMatchingMethod (Reflector.java:53)
我也试过这个:
(.open (.setMaxDbs (.setMapSize (Env/create) 10485760) 1) path org.lmdbjava.EnvFlags/MDB_NOLOCK)
还有这个:
(.. (Env/create) (setMapSize 10485760) (setMaxDbs 1) (open path org.lmdbjava.EnvFlags/MDB_NOLOCK))
我得到这个错误:
ClassCastException org.lmdbjava.EnvFlags (in module: Unnamed Module) cannot be cast to [Lorg.lmdbjava.EnvFlags; (in module: Unnamed Module) user/eval1339 (form-init2868059116743223586.clj:1)
我意识到我可能在做一些愚蠢的事情,因为我是 Java 和 Clojure 的新手。任何帮助将不胜感激!
顺便说一句,这是我正在关注的教程:
https://github.com/lmdbjava/lmdbjava/blob/master/src/test/java/org/lmdbjava/TutorialTest.java
谢谢!
来自Env.Builderclass的签名:
Env<T> open(File path, int mode, EnvFlags... flags)
您还必须提供一个 EnvFlags varargs 参数。这就是你在 Clojure 中的做法:
(.open (.setMaxDbs (.setMapSize (Env/create) 10485760) 1) path (into-array org.lmdbjava.EnvFlags []))