gpt4 book ai didi

clojure - 如何从 leiningen 项目中排除 jars?

转载 作者:行者123 更新时间:2023-12-03 22:10:15 25 4
gpt4 key购买 nike

使用 Leiningen 时,我收到以下突然错误:

线程“main”中的异常 java.lang.NoSuchMethodError: org.apache.tools.ant.util.FileUtils.getFileUtils()Lorg/apache/tools/ant/util/FileUtils; (core.clj:1)

我在 https://github.com/technomancy/leiningen/issues/194 找到了以下答案:

if ant version 1.6.1 is included in a project, lein fails. Autodoc "0.7.1" includes ant version 1.6.1.

a work around is to exclude ant.1.6.1 in the project.clj. <--- *1*
But a better solution is changing the order of lein classpath.

from bin/lein <--- *2*
CLASSPATH="$CLASSPATH:$LEIN_LIBS:$LEIN_DIR/src:$LEIN_DIR/classes:$LEIN_DIR/resources:$LEIN_JAR"
**changes to : **
CLASSPATH="$LEIN_LIBS:$LEIN_DIR/src:$LEIN_DIR/classes:$LEIN_DIR/resources:$LEIN_JAR;$CLASSPATH"

我在 https://github.com/technomancy/leiningen/blob/master/doc/TUTORIAL.md 阅读了 Leiningen 教程以及位于 https://github.com/technomancy/leiningen/blob/stable/sample.project.clj 的示例 project.clj 文件,但我还有以下问题:

1) 在上面标记为 1 的行,我不知道如何排除特定版本的 jar 文件。

2) 在上面的 2 处,确切地说是 bin/lein ?我的 Leiningen 项目没有 bin 目录,而 Leiningen 本身就是一个脚本,所以那里没有 bin 目录?

非常感谢您的帮助。

附录 8/6/11:对于 Autodoc 的具体问题,我找到了 Autodoc 的一个 fork,为我解决了这个问题。只需将 "[org.clojars.weavejester/autodoc "0.9.0"]"添加到 project.clj > defproject > :dev-dependencies条款。然后,从命令行(目录等于您的 leiningen 项目的根目录),执行 'lein autodoc',并稍等片刻。

最佳答案

在回答 (1) 时,我不确定他是否说您需要排除特定版本的 Ant,但更有可能通过排除 Autodoc 引入的 Ant 版本来解决问题(无论是什么版本) )。你可以尝试这样的事情:

(defproject my-project "1.0.0"
:dependencies [[org.clojure/clojure "1.2.0"]
                [org.clojure/clojure-contrib "1.2.0"]]
:dev-dependencies [[autodoc "0.7.1" :exclusions [org.apache.ant/ant]]])

我仅在此处的开发依赖项中排除了它,假设 Autodoc 仅在构建期间使用。

对于 (2),你是对的,Leiningen 是一个脚本,但在问题报告中,作者建议编辑 Leiningen 脚本以通过更改 Leiningen 的 CLASSPATH 中引用的目录顺序来解决问题。

关于clojure - 如何从 leiningen 项目中排除 jars?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6802026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com