前言:
找了好久,居然没找到一篇简单明了的说明如何在Clojure里调用自己写的Java类,特别是在REPL里调用自己写的Java类的文章,只好自己摸索,将结果总结如下
1、关于Leiningen
REPL里调用自己写的Java类离不开Lein的帮助
Leiningen 的操作诸如
lein run
lein test
lein repl
都是上下文有关,特定于所处的项目
2、为项目设置java-source-paths
不管是在一个已有项目,还是用 lein new xxx
新建一个项目,
总之需要在项目文件project.clj
里的defproject
里修改(或者添加)属性: :java-source-paths
例如项目“hi”的project.clj
(defproject hi "0.0.1-SNAPSHOT" :description "FIXME: write description" :dependencies [[org.clojure/clojure "1.8.0"] [seesaw "1.4.5"]] :javac-options ["-target" "1.6" "-source" "1.6" "-Xlint:-options"] :java-source-paths ["src/java"] :aot [hi.core] :main hi.core)
src/java:project.clj所在目录下的src/java目录里放置Java代码
3、编译Java源文件
参考https://github.com/technomancy/leiningen/blob/master/doc/MIXED_PROJECTS.md lein run , lein test, etc
会自动编译Java源代码
(顺便一提,lein uberjar
会编译clojure项目成一个jar包,供JVM调用)
但如果想要在项目的REPL里调用自己编写的Java类,需要lein javac
手工编译
然后就可以Clojure里调用Java类了。。。