8

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/tokyo.mdのLeiningenチュートリアルと、https://github.com/technomancy/leiningen/blob/stableのサンプルproject.cljファイルを読みました。 /sample.project.cljですが、まだ次の質問があります。

1)上記の1とマークされた行では、jarファイルの特定のバージョンを除外する方法がわかりません。

2)上記の2で、正確には何bin/leinですか?私のLeiningenプロジェクトにはbinディレクトリがなく、Leiningen自体はスクリプトなので、binディレクトリはありませんか?

助けてくれて本当にありがとうございます。


補遺8/6/11:Autodocの特定の問題について、問題を修正するAutodocのフォークを見つけました。「[org.clojars.weavejester/autodoc"0.9.0"]」をproject.clj>defproject>:dev-dependencies句に追加するだけです。次に、コマンドラインから(ディレクトリがleiningenプロジェクトのルートと等しい)、「lein autodoc」を実行し、しばらく待ちます。

4

1 に答える 1

14

(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はビルド中にのみ使用されると仮定して、ここではdev-dependenciesでのみ除外しました。

(2)の場合、あなたは正しいです。Leiningenはスクリプトですが、問題レポートでは、作成者はLeiningenのCLASSPATHで参照されるディレクトリの順序を変更することにより、問題を修正するためにLeiningenスクリプトを編集することを提案しています。

于 2011-07-23T19:12:11.750 に答える