Clojure里调用Java类

时间:2022-11-18 22:47:54

前言:

找了好久,居然没找到一篇简单明了的说明如何在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类了。。。

实例代码http://download.csdn.net/detail/minghu9/9524391