Clojure在uberjar中更改命名空间

Clojure在uberjar中更改命名空间,clojure,namespaces,leiningen,Clojure,Namespaces,Leiningen,在Clojure中更改命名空间时遇到问题。当我在REPL中,甚至当我运行lein时,我可以使用 (ns ppm.core) (in-ns ppm.core) 然而,当我将其转换为uberjar时,我得到了一个错误:“不能用set更改/建立:ns的根绑定”。这真的让我很沮丧,因为我用罐子交作业,但我找不到任何东西来解决它。有没有办法将名称空间设置为我的文件,或者直接将函数导入用户名称空间 提前感谢现在还不清楚你想在这里实现什么,你能详细说明一下吗?我猜您可能正在查找:require语句的ns宏?

在Clojure中更改命名空间时遇到问题。当我在REPL中,甚至当我运行lein时,我可以使用

(ns ppm.core)
(in-ns ppm.core)
然而,当我将其转换为uberjar时,我得到了一个错误:“不能用set更改/建立:ns的根绑定”。这真的让我很沮丧,因为我用罐子交作业,但我找不到任何东西来解决它。有没有办法将名称空间设置为我的文件,或者直接将函数导入用户名称空间


提前感谢

现在还不清楚你想在这里实现什么,你能详细说明一下吗?我猜您可能正在查找
:require
语句的
ns
宏?当我在REPL中运行代码时,名称空间默认为核心文件的名称空间,即ppm.core。当我用“leinrun”或“leinuberjar”编译它时,它默认为用户名称空间。我想切换到ppm.core名称空间,或者将函数从ppm.core导入到用户名称空间。我仍然不确定您的目标,所以我要做更多的猜测。首先,您可以在
项目.clj
中指定一个
:main
函数,该函数将在执行
lein run
uberjar
时运行。此函数可以位于
ppm.core
命名空间中,无需导入。如果启动repl,还可以通过
:init ns
选项(在
:repl
选项中)指定repl将在其中启动的命名空间。
(在ns ppm.core中)
应该是
(在ns'ppm.core中)