这是我第一次接触 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))
)
主要问题仍然存在。单击运行时如何启动它?当我点击立即运行时,我得到的只是一条绿色的小消息,上面写着#'Physics.core/-main,但应用程序实际上并没有运行。
最佳答案
ns
Physics.core
中应该有一个-main
函数=> (load "core")
直接在src
文件夹中查找core.clj
。您应该改用(load "Physics/core")
。(定义重启[] (重新加载) (-主要的) )
这里,你应该在这个表单之前写上(declare -main)
关于java - 您如何在 eclipse 中设置一个 clojure 项目,以便在您单击运行时启动它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22906321/