gpt4 book ai didi

clojure - 从其他命名空间导入记录时出现 ClassNotFoundException

转载 作者:行者123 更新时间:2023-12-02 14:20:57 25 4
gpt4 key购买 nike

我有以下文件:

src/my_proj/myns.clj:

(ns my-proj.myns)
(defrecord MyRecord [a b c])

测试/my_proj/myns_test.clj:

(ns my-proj.myns-test
(:require [clojure.test :refer :all]
[my-proj.myns :refer :all])
(:import [my-proj.myns MyRecord]))

(def my-rec (MyRecord. "A" "B" "C"))

(deftest my-test
(testing "test"
(is (:a my-rec))))

当我运行时:

lein test

我收到 ClassNotFoundException :

Exception in thread "main" java.lang.ClassNotFoundException: my-proj.myns.MyRecord
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at clojure.lang.DynamicClassLoader.findClass(DynamicClassLoader.java:61)
at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
at java.lang.Class.forName0(Native Method)

我错过了什么?

最佳答案

如果要导入,则需要将连字符更改为下划线

user=> (ns sad-hyphen)
nil
sad-hyphen=> (defrecord MyRecord [a b c])
sad_hyphen.MyRecord
sad-hyphen=> (ns foo)
nil
foo=> (import '(sad-hyphen MyRecord))
ClassNotFoundException sad-hyphen.MyRecord ...
foo=> (import '(sad_hyphen MyRecord))
sad_hyphen.MyRecord

但是,通常不需要导入记录,只需使用 ->MyRecordmap->MyRecord 构造函数(通过 require/带入您的命名空间)引用)。

关于clojure - 从其他命名空间导入记录时出现 ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23419786/

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