列出clojure中可用的java包和类

时间:2015-04-17 04:17:05

标签: java reflection clojure leiningen

在clojure中,如果我有一个命名空间,How to list the functions of a namespace?的答案很有用,特别是(ns-imports 'my-package)可以告诉我已经导入的Java代码。我可以找到(all-ns)的命名空间列表。是否有类似的方法来查找所有可用java包的列表,并预览尚未导入的java类?

我分别通过:resource-paths:java-source-paths从Leiningen制作了大量JAR和.class文件。但是,由于我是Java代码库的新手,我实际上并不知道为了导入它们而定义了哪些包。我可以用find,xargs和grep做一些事情,但以编程方式提供这些信息会很不错。此外,在未来,我希望能够做到"反思"例如,在Clojure中的Java代码库中,注意到何时定义了新类。

在LISP世界中,有一个名为“do-external-symbols'我搜索了这篇文章,从2007年开始进行this讨论。看来Clojure本身已经解决了问题,但是对于Clojure的Java观点还不太清楚。

2 个答案:

答案 0 :(得分:2)

如果您使用的是苹果酒/ emacs,甚至只是lein repl,则可以通过标签按钮访问自动完成功能。

=> (java.lang.B  <press tab>
java.lang.Boolean  java.lang.BootstrapMethodError  java.lang.Byte

这个功能似乎是由Alexander Yakushev的库compliment驱动的,所以我建议你仔细看看它是如何工作的!

答案 1 :(得分:1)

据我所知,你可以从Clojure调用Java代码。我最近在Google上发现了一个名为“Reflections”的图书馆,它将为您列出类路径中的所有内容。我已经用这个库分析了JPA实体的类,它很容易使用。