【问题标题】:Why am I unable to load files in Clojure?为什么我无法在 Clojure 中加载文件?
【发布时间】:2019-03-23 13:55:53
【问题描述】:

我刚开始学习 clojure,但很难理解为什么我的文件结构是错误的。在主文件(main.clj)中, 我只有这个:

(ns example.core
    (:gen-class)
    (:load "declare"))

...some code...

在“declare.clj”中,它位于完全相同的类路径“project/src”中,我有这个:

(in-ns 'example.core)
...some code...'

据我了解,我应该使用正确的语法,但我只收到

找不到 clojurepractice2/src/clojurepractice2/declarations__init.class 或 clojurepractice2/src/clojurepractice2/declarations.clj 在类路径上。

来自 REPL。我正在使用 lein 进行编码,我知道它应该自动设置类路径。我有什么遗漏吗?
我试过使用load-file 得到同样的结果。

【问题讨论】:

  • 从阅读文档开始,尽管教程与我所看到的相比是粗略的。
  • 在尝试自己拼凑之前,您需要先学习一两个教程。从您发布的极少内容来看,使用:gen-class 毫无意义。您应该在命名空间声明中使用:require。目前还不清楚您的源文件中的内容以及您在 REPL 中输入的内容。

标签: clojure classpath leiningen read-eval-print-loop


【解决方案1】:

main.clj 应该有命名空间example.main。或将其重命名为core.clj。这绝对是文件名和命名空间不匹配的问题。

【讨论】:

  • 实际上,我在进行更改时遇到了问题,但错误仍然存​​在。您对可能导致它的原因有任何其他想法吗?只是为了上下文,这是在 Windows 10 上的全新安装
【解决方案2】:

因为文件名应该与命名空间名相同。 如果您的文件位于 src/example/main.clj 中,则命名空间应为 example.main。 用法是

(ns example.main
    (:gen-class)
    (:load "declare"))

文件路径是否为 src/example/main.cljmain 是在 example folder 中的 src 中吗?

【讨论】:

    猜你喜欢
    • 2021-08-26
    • 2015-01-01
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多