目前 tools.deps 不支持包含自带的原生库的 jars。
chrisn@chrisn-dt:~/dev/tvm-clj/tvm/build$ clojure -Sdeps '{:deps {techascent/tech.opencv {:mvn/version "1.2"}}}'
Clojure 1.9.0
user=> (require '[tech.opencv :as opencv])
警告:在 tech.datatype.base 命名空间中,cast 已经引用了: #'clojure.core/cast,现在将被替换为: #'tech.datatype.base/cast
警告:在 tech.datatype 命名空间中,cast 已经引用了: #'clojure.core/cast,现在将被替换为: #'tech.datatype/cast
编译器异常 java.lang.ClassNotFoundException: org.bytedeco.javacpp.opencv, 编译:(tech/opencv.clj:1:1)
这种方式在 leiningen 和 java 中都有效。
以下是 Leiningen 的代码片段,用于执行此操作:
https://github.com/technomancy/leiningen/blob/master/leiningen-core/src/leiningen/core/classpath.clj
很多 Java 软件都这样做。
1. 尽可能地从系统中载入库。
如果失败,将 jar 包中包含的库提取到临时位置并尝试加载。
我相信这是最好的途径,尽管这在 tools.deps 的范围之外;或许可能会有一个配套库?