Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
构建Clojure蛋糕构建环境_Clojure - Fatal编程技术网

构建Clojure蛋糕构建环境

构建Clojure蛋糕构建环境,clojure,Clojure,我有一个名为mr1的clojure应用程序;其project.clj位于./mr1/,mr1.clj位于./mr1/src 我不知道如何正确地构造目录、名称空间和project.clj文件,因此我可以使用cake-bin构建二进制文件 随信附上我当前的project.clj和mr1.clj的头尾 src/mr1.clj将fine加载到cake repl中并执行。cake bin生成一个不包含main的mr1文件 (defproject mr1 "0.0.1-SNAPSHOT" :descri

我有一个名为mr1的clojure应用程序;其project.clj位于./mr1/,mr1.clj位于./mr1/src

我不知道如何正确地构造目录、名称空间和project.clj文件,因此我可以使用cake-bin构建二进制文件

随信附上我当前的project.clj和mr1.clj的头尾

src/mr1.clj将fine加载到cake repl中并执行。cake bin生成一个不包含main的mr1文件

(defproject mr1 "0.0.1-SNAPSHOT"
  :description "TODO: add summary of your project"
  :dependencies [[org.clojure/clojure "1.3.0"]
                 [org.clojure/tools.cli "0.1.0"]]
   :main mr1)

(ns mr1
    (:use [clojure.string :only [split]]
          [clojure.string :only [join]]))
。 .


正如我在回答您的问题时提到的,您必须启用名称空间的AOT编译。我在这里复制了这个答案,以防有人有同样的问题

正如文件所说,
:main
键应该有一个包含
-main
函数的名称空间作为赋值。所以你应该有这样的功能

(defn -main [& args]
  (do-things-you-want-to-do-on-program-start))
在您的mr1.clj中。另外,如果你想把你的程序作为一个独立的jar使用,你必须对这个名称空间进行分类。我的意思是,你必须:

  • 在命名空间定义中包括
    :gen class
    选项,如下所示:

    (ns mr1
      (:gen-class)
      ...other options...)
    
  • 编译名称空间AOT(AOT代表提前)。为此,您需要在project.clj中的AOT编译名称空间列表中指定您的名称空间:

    (defproject mr1 "0.0.1-SNAPSHOT"
      ...other definitions...
      :aot [mr1]
      :main mr1)
    

  • 完成此操作后,您可以使用
    cake
    为您生成可执行jar。

    很抱歉发生冲突,也感谢您的回答。
    (defproject mr1 "0.0.1-SNAPSHOT"
      ...other definitions...
      :aot [mr1]
      :main mr1)