【问题标题】:Running a Clojure program运行 Clojure 程序
【发布时间】:2011-04-05 10:30:18
【问题描述】:

假设我在 clojure 中创建了一个程序,我必须将它交付给客户。客户确实有一些计算机知识,但他不知道/不想启动 repl、加载我的程序并运行它。他想双击一个exe文件或运行一个shell脚本

我如何打包我的程序并交付(程序本身与 clojure jars)?

【问题讨论】:

    标签: clojure packaging


    【解决方案1】:

    如果您使用的是蛋糕,我发现的最佳方法是 cake bin。它将为您生成一个打包的二进制文件(可能与 launch4j 相同或相似)。

    【讨论】:

      【解决方案2】:

      你有几个选择:

      • 将程序编译成Java类,并给一个main方法。将它们打包成一个可执行的 jar。
      • 如上所述,如果您使用 Leiningen,那么您可以使用 lein uberjar 很好地组装所有内容,确保您已声明一个主类。
      • 您也可以将项目打包成一个不可执行的 jar(无主类)并创建一个 shell 脚本/批处理文件来执行正确的类,例如java -cp ./clojure.jar:./myprogram.jar com.my.runthis.class
      • 只需将 .clj 文件打包到 jar 中,然后使用 shell/batch 脚本启动 repl,然后自动发出命令,例如java -cp ./clojure.jar:./myprogram.jar clojure.main -e "(in-ns 'your-ns)(start-your-program)" -r

      【讨论】:

      • 关于 clojure.main 的参数:-e 表示执行? -r 是什么意思?我在哪里可以读到它们?谢谢
      • -e 表示评估 -r 表示启动一个 repl。选项在clojure.org/repl_and_main 中描述
      【解决方案3】:

      您可以使用 leiningen 创建 uberjar,正如 Greg Harman 所写... 我个人使用 maven 创建具有所有依赖项的独立 jar,声明主类 - 这使用“java -jar your-jar-file”命令简化了它的运行。我还使用 Izpack 为我的程序创建安装程序

      【讨论】:

        【解决方案4】:

        最简单的方法是让 leiningen 为您处理 jar,它将所有内容打包到一个胖 jar 中,这就是您需要交付的所有内容,就像任何其他 java 应用程序一样。客户所要做的就是双击它。如果您需要一个 .exe 文件 launch4j 可以为您创建它,它也可以处理 JRE 安装(如果它尚未安装在客户端计算机上)。您不需要任何 bash 脚本等。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-28
          • 1970-01-01
          相关资源
          最近更新 更多