You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Clojure运行测试文件报找不到doppelkopf.src.core异常排查

问题根因

报错由类路径规则、namespace写法、文件存放路径三者不匹配导致:

  1. 你的deps.edn中配置:paths ["src" "test"],代表Clojure会直接把项目根目录下的src、test两个文件夹作为类加载根目录,这两个文件夹的名称本身不会作为namespace的组成部分。
  2. 测试文件中写的[doppelkopf.src.core :refer :all],相当于要求Clojure去类路径根下查找doppelkopf/src/core.clj文件,但类路径根本身就是src目录,自然找不到对应文件,直接抛出文件不存在的异常。
  3. 现有文件存放位置不符合Clojure的路径映射规则:namespace的每一段对应类路径根下的一层目录,namespace的最后一段对应文件名(namespace中的横杠会自动映射为文件名的下划线)。
修复方法

按以下步骤调整即可解决问题:

  • 调整源码目录结构:在src目录下新建doppelkopf子文件夹,将原放在src/路径下的core.clj移动到src/doppelkopf/路径下,core.clj的ns声明统一写为(ns doppelkopf.core)
  • 调整测试目录结构:在test目录下新建doppelkopf子文件夹,将原放在test/路径下的测试文件移动到test/doppelkopf/路径下,测试文件重命名为core_test.clj(匹配namespace中的core-test段)
  • 修改测试文件的依赖引入:将错误的[doppelkopf.src.core :refer :all]替换为[doppelkopf.core :refer :all]

调整完成后,项目的标准目录结构如下:

doppelkopf/  # 项目根目录
├── deps.edn
├── src/
│   └── doppelkopf/
│       └── core.clj
└── test/
    └── doppelkopf/
        └── core_test.clj

修正后的测试文件完整代码:

(ns doppelkopf.core-test
  (:require
    [clojure.test :as test]
    [doppelkopf.core :refer :all]))

(test/deftest addition
  (test/is (= 5 (+ 2 3)) "addition")
  (test/is (= 4 (+ 3 1))))

重新对测试文件执行求值操作即可正常运行测试。

内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 17:54:30