获取可用的clojure命名空间

Ada*_*deg 6 namespaces clojure

是否有一种惯用的方法来获取可用的命名空间?

(all-ns)仅返回已使用的命名空间.(Package/getPackages)返回可用的所有Java包import,但仅返回已使用的Clojure命名空间.

然后我偶然发现了这篇文章,但它使用了一些类路径魔法.

所以我想得到类似的东西,('clojure.core 'clojure.set ... 'clojure.contrib.accumulators 'clojure.contrib.condition ...)如果我在我的类路径上有clojure.jar和contrib.jar,但我还没有使用任何东西.

kot*_*rak 9

你需要做"classpath magic".由于没有任何类型的注册表,您必须遍历类路径并查看每个clojure源文件以确定可用的命名空间.(如果文件不是AOT编译的.否则你需要一个不同的启发式.)

我认为链接帖子中使用的功能是最好的方法:clojure.contrib.find-namespaces/find-namespaces-on-classpath.


自Clojure 1.3.0以来已弃用; 现在用clojure.tools.namespace.find /发现的命名空间和clojure.java.classpath /类路径从http://github.com/clojure/java.classpath