【发布时间】:2011-10-10 14:39:20
【问题描述】:
我(第一次)使用 Leiningen 来管理我的写作应用程序。到目前为止,我已经定义了项目依赖项,在项目 lib 目录中安装了 deps,并定义了一个函数。当我从项目根目录运行lein repl 然后调用我定义的函数时,我收到错误unable to resolve symbol。任何人都知道我做错了什么以及如何通过 Leiningen 正确运行我的应用程序?谢谢。
【问题讨论】:
我(第一次)使用 Leiningen 来管理我的写作应用程序。到目前为止,我已经定义了项目依赖项,在项目 lib 目录中安装了 deps,并定义了一个函数。当我从项目根目录运行lein repl 然后调用我定义的函数时,我收到错误unable to resolve symbol。任何人都知道我做错了什么以及如何通过 Leiningen 正确运行我的应用程序?谢谢。
【问题讨论】:
从 leiningen repl,您必须切换到使用 in-ns 宏定义函数的命名空间。
(in-ns 'myproject.core)
那么该功能应该可用
您还可以 use repl 中的命名空间将其包含在默认(用户)命名空间中。
(use 'myproject.core)
之后,您可能需要考虑查看 lein run、lein uberjar 和 lein jar leiningen 任务。
【讨论】:
lein run,你能指出我在哪里可以找到mroe 信息吗?我已将 :main 设置为我的项目命名空间,但我在使用带有参数的 lein run 时遇到了一些困难;我不断收到Exception in thread "main" java.lang.NullPointerException (NO_SOURCE_FILE:1)
lein help(或者甚至只是单独执行lein),则会显示命令列表。您可以使用命令的名称进行更深入的挖掘;例如:lein help run
在我的项目中,对于包含这样定义的命名空间的 core.clj 文件:
(ns my-project.core)
...我在 project.clj 中 Leiningen 的 defproject 映射中设置了 :main 键:
(defproject my-project "1.0.0-SNAPSHOT"
:description "My project description"
:dependencies [[org.clojure/clojure "1.2.1"]]
:main my-project.core)
所以当我运行lein repl 时,我的核心命名空间会自动加载,我会看到:
mac:my-project scott$ lein repl
REPL started; server listening on localhost:31515.
my-project.core=>
【讨论】:
:main,是否会自动进行热代码分解?
(use :reload-all 'my-project.core)