gpt4 book ai didi

clojure - 为什么 Java 会提示找不到命名空间?

转载 作者:行者123 更新时间:2023-12-04 18:11:37 25 4
gpt4 key购买 nike

我正在尝试在 Windows 7 上设置 lein 构建环境,从 Linux 上的成功构建环境复制文件。我已经与 lein 一起安装了 maven 和 jdk。

首页指向c:\Users\cnorton maven 目录所在的位置。

尝试运行 lein repl 或 lein compile 时出现此错误,并且无法弄清楚我做错了什么。

引起:java.lang.Exception:加载'/repl_test/core'后找不到命名空间'repl-test.core'

这是project.clj

(defproject repl-test "0.0.1-SNAPSHOT"
:description "TODO: add summary of your project"
:dependencies [[org.clojure/clojure "1.4.0"]
[org.clojure/clojure-contrib "1.2.0"]
[clojure-csv/clojure-csv "1.2.4"]
[org.clojure/tools.cli "0.1.0"]
[clj-http "0.1.3"]]
:aot [repl-test.core]
:main repl-test.core)

这是 src/repl_test/core.clj 的第一部分
(ns repl-test.core
(:gen-class)
(:use clojure.contrib.command-line)
(:require [clojure.contrib.string :as cstr])
(:require [clojure.contrib.trace :as ctr])
(:require [clojure.string :as sstr])
(:use clojure-csv.core))

如果有人可以将 project.clj 和 core.clj 的标题作为答案发布,我会非常有帮助,该标题允许项目成为主要项目。

最佳答案

我会避免在您的文件夹名称和命名空间中使用“-”,它实际上会转换为“_”,但并非在所有地方都转换为“_”。

以下内容可能适合您,也可能不适合。我让你的骨架项目与:

(defproject st1 "1.0.0-SNAPSHOT"
:description "TODO: add summary of your project"
:dependencies [[org.clojure/clojure "1.4.0"]
[org.clojure/clojure-contrib "1.2.0"]
[clojure-csv/clojure-csv "1.2.4"]
[org.clojure/tools.cli "0.1.0"]
[clj-http "0.1.3"]]
:aot [repl_test.core]
:main repl_test.core)

与您拥有相同的 clj 文件:
 (ns repl_test.core
(:gen-class)
(:use clojure.contrib.command-line)
(:require [clojure.contrib.string :as cstr])
(:require [clojure.contrib.trace :as ctr])
(:require [clojure.string :as sstr])
(:use clojure-csv.core))

我重命名了文件夹 复制测试 repl_test 带下划线。

然后
 lein compile


 lein run

出于好奇,我也看了 clojure-csv ,并且他们在所有地方都使用“-”,除了文件夹名称,所以可能会很幸运地复制他们所做的事情。

另外,引用 another SO question在 clojure 命名空间上:

“另请注意,您不能在命名空间名称中使用下划线或在文件名中使用连字符,并且无论在何处使用命名空间名称中的连字符,都必须在文件名中使用下划线(以便定义 ns my.cool-project在名为 my 的目录中名为 cool_project.clj 的文件中)。”

来自 Clojure Programming Wiki java包部分:
“Clojure 尊重目录和文件的 Java 命名约定,但命名空间名称遵循 Lisp 命名约定。因此 Clojure 命名空间 com.my-app.utils 将位于名为 com/my_app/utils.clj 的路径中。特别注意下划线/连字符区别。”

关于clojure - 为什么 Java 会提示找不到命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12718658/

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