如何从clojure代码构建可执行jar?在一个程序中使用java的主要功能

vik*_*hal 3 windows jar clojure

如何从clojure代码构建可执行jar?

我希望它有一个main函数,以便java -jar jarfile.jar运行该程序.

sem*_*ros 10

正如Erhan Bagdemir回答的那样,你应该使用Leiningen.以下是我在Windows上的操作方法:

在Windows上安装Leiningen

你要下载Leiningen脚本并把它放在你的某个地方PATH.如果您的路径上已有一个用于可执行脚本的文件夹,如果没有,请执行以下操作:

  1. 从Github下载Leiningen软件包.
  2. 将其解压缩到您的主文件夹(例如/Users/vikbehal)
  3. 添加通过解压缩创建的文件夹到您的PATH.为此,请打开"控制面板",然后转到"系统"区域,您可以在其中编辑环境变量.PATH通过添加/Users/vikbehal/lein(或调用任何文件夹)来编辑系统或用户的值PATH,确保通过分号(;)将该条目与其他条目分开.
  4. Ok保存更改.

您可以通过打开命令提示符并运行来验证是否已成功安装Leiningen lein help.您应该看到Leiningen安装一些初始文件.如果您收到错误,请确保已正确添加Leiningen所在的文件夹PATH.

用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
Run Code Online (Sandbox Code Playgroud)

看起来最后一个命令就是你想要的,对吧?首先,您需要配置一些东西,以便Leiningen可以正确构建您的可执行jar.

配置可执行/独立Jar

您需要做三件事才能lein uberjar正常工作:

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

现在跑lein uberjar.在开发时,您可以选择使用,lein run如果您想测试应用程序作为可执行jar的行为,但不希望每次进行更改时都显式重新jar.