【问题标题】:FileNotFoundException when using database function with datomic free使用带 datomic free 的数据库函数时出现 FileNotFoundException
【发布时间】:2014-06-06 15:20:46
【问题描述】:

我在使用需要命名空间的数据库函数时收到 FileNotFoundException。我只在使用持久 datomic free 数据库时出现错误,但在使用内存数据库时没有。

(ns test.core
  (:use [datomic.api :only [q db] :as d]))

(def uris ["datomic:mem://test"
       "datomic:free://localhost:4334/test"])

(map
  d/delete-database uris)

(map
  d/create-database uris)

(def conns (map d/connect uris))

(defn test-entity []
  [{:db/id #db/id[:db.part/db]
   :test/test "hello"}])

(def db-function
  #db/fn {:lang :clojure
          :params [database]
          :requires [[test.core :as c]]
          :code (c/test-entity)})

(map
  #(d/transact % [{:db/id #db/id[:db.part/user]
                   :db/ident :db-function
                   :db/fn db-function}])
conns)

(map
  #(d/transact % [{:db/id #db/id[:db.part/db]
                   :db/ident :test/test
                   :db/valueType :db.type/string
                   :db/cardinality :db.cardinality/one
                   :db.install/_attribute :db.part/db}])
conns)

(comment
  (db-function nil)
  (d/transact (first conns) [[:db-function]])
  (d/transact (second conns) [[:db-function]]))

当您评估评论中的第一行和第二行时,这很好,但是当您评估第三行时,您会得到一个异常。

我是否需要在 datomic 中配置一些东西以便它可以“看到”我的项目?

【问题讨论】:

    标签: clojure datomic


    【解决方案1】:

    当您使用内存数据库时,事务处理程序与对等方在相同的 JVM 实例中运行,因此具有相同的类路径。但是对于免费数据库,事务处理程序在其自己的 JVM 实例中运行,并且不知道对等方中的命名空间。

    您可以通过将 jars 放在 lib/ 文件夹中来将它们添加到 Transactor 类路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多