在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观点还不太清楚。
答案 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实体的类,它很容易使用。