我在我的Linux Mint机器上安装了Geany,并编写了一些简单的代码。只是一个小小的世界,开始使用该语言。
现在我想运行它,看看它输出了什么。
如何运行此代码?我没有使用IDE或预先打包的东西,只是简单的文本编辑器Geany。
我应该运行什么命令?
答案 0 :(得分:59)
clojure
我无法相信没有人提出这个建议。你应该能够做到
clojure path/to/script.clj
这适用于使用apt-get在Ubuntu上安装的clojure。不确定其他安装......
lein-exec
但是,如果您正在处理的脚本具有任何依赖关系,我建议使用lein-exec
plugin。这样做的好处是可以让你使用Leiningen来处理任何依赖项,这很好。 Leiningen already has一个lein run
命令,但它只适用于执行完整Clojure / lein项目中的主要功能。所以lein-exec
插件是小规模脚本编写的一个非常好的补充。
注意:为了彻底,如果使用lein,您可以将要使用的任何库添加到~/.lein/profiles.clj
文件,或者添加到project.clj
文件中,如果您正在使用项目。然后,当您运行lein deps
时,将使用lein exec
/ lein run
在您的脚本/项目中安装和访问所有依赖项。此外,lein repl
为您提供了一个可以访问这些依赖项的Clojure repl。同样,如果你有任何库依赖,那绝对是你要走的路。
drip
来加快启动时间Drip是一个简洁的小工具,可以为您提供准备启动的预引导JVM映像。这对于减少JVM应用程序启动时间非常有用。 Clojure可能需要花费很长时间来自我引导,因此滴水是一个很好的工具,可以帮助加快这个过程。当您编写小脚本时尤其如此,通常需要快速运行。如果您正在使用leiningen,请查看lein-drip插件。
我建议http://planck-repl.org/。它现在支持(引导)快速启动ClojureScript脚本,而无需启动JVM或Clojure。对于大多数脚本任务而言,快速执行很重要,因此当您不需要JVM特有的任何内容时,这是我的第一推荐。
答案 1 :(得分:56)
您可以使用以下命令运行脚本:
java -cp clojure.jar clojure.main file.clj
但最好使用leiningen,尤其是当您开始向项目添加依赖项时。 lein提供了许多命令来运行代码(包含所有必需的依赖项),使用lein jar
将代码打包到存档中,或者创建可以与lein uberjar
一起运行的完整,独立的存档:
java -jar your_app.jar
命令
P.S。您可以在following article中了解如何使用lein
- 它描述了基本任务&构造
答案 2 :(得分:12)
一旦您安装了lein和lein-exec插件,运行您创建的.clj文件就像
一样简单lein exec hello.clj
如果您正在传递命令行参数,例如
lein exec hello.clj arg1 arg2 arg3
您可以在“foo”中访问它们。 hello.clj中的函数,如
(foo *command-line-args*)
答案 3 :(得分:8)
对于单个clj文件,您可以添加
#!/usr/bin/env java -cp /path/to/clojure-1.2.0.jar clojure.main
到文件的顶部并使其可执行,或者您可以使用leiningen这是一个clojure构建工具,它将创建一个包装好的所有包装,然后就可以了,
java -jar cool_app.jar
答案 4 :(得分:1)
Drip现在可能是这个问题的最佳答案(有关使用Drip with Clojure的详细信息,请参阅Drip's wiki。)
Cake已被纳入Leiningen,并已被Drip - see this answer取代为Clojure自动化最稳定的实现,在此处提出了类似的问题。
答案 5 :(得分:1)
如果您只想执行单个文件,请如何将其传递给repl,如:
cat $PATH_TO_FILE | lein repl
答案 6 :(得分:0)
我在使用lein
从clojure项目中运行特定的clojure脚本文件时遇到了类似的问题。然后我找到了一条捷径,想到分享同样的东西。
在project.clj
文件中,您可以切换clojure脚本文件名(当然还有主要方法)。以下是对此的陈述。
:main ^:skip-aot conv.newconv
; here conv is namespace and newconv is the file name
。
注意: 我是clojure的新手,我不确定为什么使用'^:skip-aot`,我没有检查过。< / em>的
注意: 此方法,不需要安装任何插件,也不需要生成任何jar文件。这只需要更改项目文件中的名称。
假设:您的clojure项目有多个clojure文件,每个文件都有main方法。我假设这是为了测试目的而创建的。我的解决方案适用于这种特定情况。
答案 7 :(得分:0)
要通过命令行运行单个文件,请使用以下命令:
clj -m (NameSpace name)
例如:clj -m Sample
或者如果您想运行repl:
(load-file filelocation)
例如:
(load-file "Sample.clj")