这是我第一次使用Clojure,但我知道lisp和java,但很快就厌倦了这个REPL!我不认为当我点击运行时,应用程序运行,所以我添加了一个:main到我的项目,这太过分了。
(defproject Physics "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.5.1"]]
:aot [Physics.core]
:main Physics.core
)
这就是我现在得到的
Exception in thread "main" java.lang.RuntimeException: Unable to resolve symbol: -main in this context, compiling:(Physics/core.clj:19:3)
应用程序在尝试将其设置为自动启动之前正常工作但在我将:main指令添加到我的项目之后它已经破坏了,删除:main指令根本没有帮助,因为我现在得到了同样的错误。如果我尝试从REPL手动加载应用程序,则无法找到它。
;; Clojure 1.5.1
=> (load "core")
FileNotFoundException Could not locate core__init.class or core.clj on classpath: clojure.lang.RT.load (RT.java:443)
重启eclipse解决了这个问题......
以下是src / Physics / core.clj中的代码(根据初步答案修改)
(ns Physics.core (:gen-class))
(declare -main)
(defn app-name []
"Physics"
)
(defn version []
"0.0.1-alpha"
)
(defn reload []
(load "core")
(load "config")
(load "desktop")
)
(defn author []
"Ralph Ritoch"
)
(defn author-email []
"Ralph Ritoch <rritoch@gmail.com>"
)
(defn copyright []
"Copyright \u00A9 2014 Ralph Ritoch. All rights reserved."
)
(defn banner []
(println (str (app-name) " v" (version)))
(println (copyright))
)
(defn restart []
(reload)
(-main)
)
(defn -main [& args]
(ns Physics.core)
(banner)
(load "config")
(load "desktop")
(eval '(Physics.desktop/create))
)
主要问题仍然存在。点击运行后如何启动它?当我点击立即运行时,我得到的是一条绿色的消息,上面写着#&#39; Physics.core / -main但是应用程序实际上并没有运行。
答案 0 :(得分:2)
-main
ns
Physics.core
个功能
=> (load "core")
直接在core.clj
文件夹中查找src
。您应该使用(load "Physics/core")
代替。
(defn restart []
(reload)
(-main)
)
在这里,您应该在此表单之前写下(declare -main)
答案 1 :(得分:1)
从eclipse主菜单中选择运行&gt;运行配置,然后选择或创建一个clojure运行配置并单击(x)= Arguments 选项卡,并将程序参数:设置为以下内容。< / p>
-m Physics.core
将 Physics.core 替换为包含-main defn
的命名空间注意:这可能不是最佳解决方案,但可行。