java - 您如何在 eclipse 中设置一个 clojure 项目,以便在您单击运行时启动它?

标签 java eclipse clojure

这是我第一次接触 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,但应用程序实际上并没有运行。

最佳答案

  1. ns Physics.core 中应该有一个-main 函数
  2. => (load "core")直接在src文件夹中查找core.clj。您应该改用 (load "Physics/core")

  3. (定义重启[] (重新加载) (-主要的) ) 这里,你应该在这个表单之前写上(declare -main)

关于java - 您如何在 eclipse 中设置一个 clojure 项目,以便在您单击运行时启动它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22906321/

相关文章:

java - 需要有关java中单例类的信息

java - Velocity 宏与指令

java - Clojure (Java) 和 Ruby 应用程序进行通信的最快可靠方式

Java rowAtPoint() 未返回正确的值

java - 开放声明中的这个错误是什么?

java - 如何在 Eclipse 中设置主要 Java 类型?

java - Eclipse Genymotion错误: Java was started but returned exit code=-805306369

clojure - 递归文件系统算法是否应该以命令式方式处理?

authentication - 在单页Clojure Web应用程序中使用Friend进行身份验证和授权

java - 读取动态生成的微调器的值 - 如何执行此操作?