gpt4 book ai didi

java - 在 Clojure 中使用 lmdbjava

转载 作者:行者123 更新时间:2023-12-02 02:38:40 24 4
gpt4 key购买 nike

我正在尝试在 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.Builder 的签名类:

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 []))

另请参阅How to handle java variable length arguments in clojure?

关于java - 在 Clojure 中使用 lmdbjava,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45850266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com