leiningen运行AOT编译的java类

时间:2012-06-20 02:53:14

标签: clojure leiningen

上下文

如果我想让Lein 1.7开始加载特定类,我会这样做:

:repl-init init.init

现在,我没有让lein加载* .clj文件,而是希望lein做“java Foo”的等价,其中Foo是classes / Foo.class

问题:

我的project.clj看起来很像:

(defproject ...
  :aot [Foo]
  ???? )

我放入什么?通过执行“java Foo”使“lein repl”启动?

谢谢!

1 个答案:

答案 0 :(得分:3)

如果我理解你的问题,你仍然可以使用:repl-init通过调用你想要预先加载到由repl加载的命名空间的类来实现。在这个例子中,我使用println语句作为你想要完成的设置的代表: - )

project.clj:

(defproject foooo "1.0.0-SNAPSHOT"
  :description "FIXME: write description"
  :dependencies [[org.clojure/clojure "1.3.0"]]
  :aot [foooo.core]
  :main foooo.core
  :repl-init foooo.core)

core.clj

(ns foooo.core
  (:gen-class))
(println "setting up for fun")

(defn -main [])

编译:     arthur @ a:〜/ foooo $ lein编译     编译foooo.core     编译成功。

运行:

arthur@a:~/foooo$ CLASSPATH=./lib/clojure-1.3.0.jar:./classes/ java foooo.core 1
setting up for fun

或:

arthur@a:~/foooo$ lein run
setting up for fun

REPLing:

arthur@a:~/foooo$ lein repl
REPL started; server listening on localhost port 63392
setting up for fun
foooo.core=>