如何在Clojure中查看classpath及显示classpath的所有目录?
在Clojure中查看Classpath及目录的方法
日常开发里经常需要查看Clojure项目的classpath,我整理了几个实用的方法,不管用命令行还是在REPL里都能轻松搞定:
1. 用Clojure CLI命令快速查看
这是最直接的方式,不用进入REPL就能拿到结果:
查看完整classpath(包含所有依赖JAR和本地目录):
clj -Spath执行后会输出用路径分隔符(Unix类系统是
:,Windows是;)分隔的完整路径字符串。只显示classpath中的目录(过滤掉JAR文件):
根据你的操作系统调整命令:- Unix/macOS/Linux:
clj -Spath | tr ':' '\n' | grep -v '\.jar$' - Windows PowerShell:
(clj -Spath) -split ';' | Where-Object { $_ -notmatch '\.jar$' }
- Unix/macOS/Linux:
2. 在Clojure REPL中交互式查看
如果已经在REPL里开发,直接用以下代码就能查看:
- 获取完整classpath字符串:
(System/getProperty "java.class.path") - 把classpath拆分成单独的路径列表:
(clojure.string/split (System/getProperty "java.class.path") (re-pattern (System/getProperty "path.separator"))) - 只筛选出classpath中的目录:
(filter #(not (.endsWith % ".jar")) (clojure.string/split (System/getProperty "java.class.path") (re-pattern (System/getProperty "path.separator"))))
3. 用tools.deps API获取(进阶)
如果你需要在代码中动态计算classpath,可以借助Clojure CLI内置的tools.deps.alpha库:
(require '[clojure.tools.deps.alpha :as deps]) (deps/calculate-classpath (deps/default-deps))
这个方法会返回和clj -Spath一致的结果,适合在脚本或工具中使用。
内容的提问来源于stack exchange,提问作者Sharas
相关产品推荐
相关产品推荐

