レコードの 1 つを人間が読める形式にシリアル化しようとしていました。Javaシリアライザーを使用したシリアライズは正常に機能しましたが、print-dupを使用しようとしています。私が直面している問題は、レコードの書き込みは正常に行われますが、レコードの読み取りが clojure.lang.LispReader$ReaderException: java.lang.ClassNotFoundException: common.dummy.Doodh になることです。名前空間か何かを台無しにしていますか? これは Java シリアライゼーションの問題ではないことに注意してください。以下の最も単純な形式のコード
(ns common.dummy)
(defrecord Doodh [id name])
(defn output [filename obj]
(def trr(map->Doodh {:id "moooh" :name "Cows"}))
(def my-string (binding [*print-dup* true] (pr-str trr)))
(spit filename my-string)
)
(defn pull [filename]
(def my-data (with-in-str (slurp filename) (read)))
(println my-data)
)
テキスト ファイルの内容:
#common.dummy.Doodh["moooh", "Cows"]