如何在clojure中创建可执行文件?

如何在clojure中创建可执行文件?,clojure,Clojure,我一直在使用clojure Box在REPL环境中学习clojure 如何生成可执行文件(.jar) 我想知道这样的事情是否可能: 在记事本上编写clojure代码,并将其命名为project.clj 编译project.clj 获取可执行文件 步骤2不必在命令行中完成。IDE很好。使用Leiningen创建。: 我想我会为那些希望保留Java根的人提到 正如二汉·巴格德米尔所回答的,你应该使用莱宁根。以下是我在Windows上的操作方法: 在Windows上安装Leiningen 您将下载Le

我一直在使用clojure Box在REPL环境中学习clojure

如何生成可执行文件(.jar)

我想知道这样的事情是否可能:

  • 在记事本上编写clojure代码,并将其命名为project.clj

  • 编译project.clj

  • 获取可执行文件

  • 步骤2不必在命令行中完成。IDE很好。

    使用Leiningen创建。


    我想我会为那些希望保留Java根的人提到

    正如二汉·巴格德米尔所回答的,你应该使用莱宁根。以下是我在Windows上的操作方法:

    在Windows上安装Leiningen 您将下载Leiningen脚本并将其放在
    路径的某个位置。如果路径上已有用于可执行脚本的文件夹,如果没有,请执行以下操作:

  • 下载
  • 将其解压缩到主文件夹中(例如
    /Users/vikbehal
  • 将通过解压缩创建的文件夹添加到您的
    路径
    。要执行此操作,请打开控制面板,然后转到系统区域,在那里可以编辑环境变量。编辑系统或用户的
    路径
    值,方法是将
    /Users/vikbehal/lein
    (或任何文件夹名称)添加到
    路径
    ,确保用分号(
    )将该条目与其他条目隔开
  • Ok
    保存更改
  • 通过打开命令提示符并运行
    lein help
    ,您可以验证是否已成功安装Leiningen。您应该看到Leiningen安装了一些初始文件。如果出现错误,请确保已将Leiningen所在的文件夹正确添加到您的
    路径中

    用雷宁根发展 Leiningen为您提供了一个良好的默认目录结构,处理依赖关系管理,并确保在运行REPL或(在本例中)震动应用程序时正确设置Java的类路径

    下面是Leiningen标准命令的概述:

    # Start a blank project
    lein new my-project
    
    # Pull down dependencies defined in your project.clj file
    lein deps
    
    # Create a "library" jar of your project
    lein jar
    
    # Create an executable jar of your project
    lein uberjar
    
    看起来最后一个命令就是你想要的,对吧?首先,您需要配置一些东西,以便Leiningen能够正确地构建可执行jar

    配置可执行/独立Jar 要使
    lein uberjar
    正常工作,您需要做三件事:

  • 编写一个
    -main
    函数,作为jar文件执行的“入口点”。(注意
    -
    ,它表示此函数更像一个“Java方法”,而不是一个常规Clojure函数。)
  • 确保在包含
    -main
    函数的文件顶部的
    -ns
    命名空间声明中添加
    (:gen class:main true)
    声明
  • 项目.clj中添加
    :main my.main.namespace
    条目

  • 现在运行
    leinuberjar
    。在开发过程中,如果您想测试应用程序作为可执行jar的行为,但又不想在每次更改时都显式地重新jar,您也可以使用
    lein run

    除了Leiningen,还有其他选择吗?@Da9 maven和clojure插件,。您能为Windows操作系统提供建议吗?还有一个Windows发行版:C:\Documents and Settings\x0163093>lein Leiningen是Clojure的构建工具。有几个任务可用:加载leiningen.classpath时出现问题-home dir不存在线程“main”java.lang.NoClassDefFoundError中的异常:无法在clojure.lang.Compiler.eval(Compiler.java:5440)上初始化类leiningen.classpath_uuuuinit(无源文件:0)。信息良好。我得回去再试一次。上次我试过Leiningen,那是一次相当惨淡的失败。:-)应该像在路径上粘贴
    lein
    脚本一样简单。第一次使用
    lein
    命令时,它将自动下载运行所需的所有内容。