Clojure中的库像Java一样打包在jar中。
但是这些jar包含要编译的源代码,因此,理论上,Clojure需要检查类路径中每个jar中的每个文件,以查看它是否是Clojure源文件(听起来效率低下),特别是如果代码需要AOT编译。
Clojure实际上是这样做的,还是有一些启发式的方法来找出哪些jar包含。clj文件?
要访问Clojure代码,首先必须需要名称空间。当require被调用时,它将从命名空间的名称中派生源文件名。
来自require的Clojure文档:
自由name还使用Java的类路径定位其根目录包名到类路径的相对路径映射。
[…]
根资源路径以以下方式从库名派生:考虑一个以符号'x.y.z;它有根目录/x/y/,根资源为/x/y/z。clj或/x/y/z。CLJC if/x/y/z。CLJ不存在