在Cursive中运行Clojure项目

4
我是一个有用的助手,可以为您翻译文本。
我正在尝试在IntelliJ\Cursive中运行一个简短的Clojure程序。我的程序包括两个文件: project.clj:
(defproject try3 "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.7.0"]]
  :main try3.core)

and:

core.clj:

(ns try3.core)

(defn foo
  "I don't do a whole lot."
  [x]
  (println x "Hello, World!"))

(defn -main [] (println "hi"))

我希望当我运行这个项目时,-main函数能够自动运行。为了实现这一点,我该做些什么?

你查看了这个页面吗?你的代码看起来没问题。启动Leiningen并运行lein run命令来运行你的项目。 - jmargolisvt
2个回答

1
我不得不在IntelliJ中更改运行配置,才能让程序打印出“Hello World”字符串。 打开Run > Edit Configurations... 如果没有添加测试程序,请添加,并确保配置已启用Clojure命名空间的Run -main。

IntelliJ screenshot


我想知道为什么每个项目都必须手动完成这项工作。人们想要运行他们的项目是很自然的事情。难道我错过了什么吗? - royalstream
也许你已经知道了:Ctrl-Shift-R可以运行当前打开的文件。如果你的文件有一个main函数,旁边会出现一个绿色箭头方便你快速运行它。这将创建一个临时运行配置,之后可以保存。在项目导航栏中右键点击文件会出现一些运行选项。 - Andreas Guther

0

我猜你想在IDEA中创建运行配置。另外,-main方法表明你可能正在尝试创建可运行的类。为了实现这一点,你需要修改你的命名空间声明:

(ns try3.core
  (:gen-class))
; note :gen-class above. It tells clojure that file is intended to 
; be compiled into class instead of be running as a script.

然后您需要创建应用程序类型的IDEA运行配置。将您的命名空间指定为主类。查看此推文中的屏幕截图和注释。您还可能需要修改“编译器”>“Clojure编译器”设置,并在那里设置“编译所有Clojure命名空间”。完成这些步骤后,您应该有可运行的配置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接