2015-12-02 15 views
5

私はPHP、Python、およびRubyの経験が豊富な初心者エンジニアです。私はclojureで書かれたプロジェクトに貢献しようとしています。プロジェクトにライブラリを追加しようとしていますが、ライブラリを追加してlein uberjarを実行した後、エラーが発生しています。私はそれが何を意味しているのか、それをトラブルシューティングする方法を推薦できるかどうかを知りたいと思います。ご協力いただきありがとうございます!私は を達成しようとしています何clojure依存関係を追加して、uberjarを実行すると、java.lang.IllegalAccessErrorが発生します。

は私のプロジェクトでuap-clj libraryを含めるとjarファイルにプロジェクトをコンパイルします。

私が書いたもの 私は依存関係リストの最後から2番目の項目としてライブラリを追加しました。私はproject.cljために私の変更を保存した後、私はlein clean && lein uberjarその後、lein depsを実行し、レイン According to the instructions on githubに走った何

:dependencies [[lots-of-dependencies] 
       [uap-clj "1.1.1"] ; user agent parser 
       [another-dependency]] 

java.lang.IllegalAccessError: tried to access method clojure.lang.RT.classForNameNonLoading(Ljava/lang/String;)Ljava/lang/Class; from class clj_yaml.core$loading__5340__auto____29, compiling:(flexmaster.clj:1:1) 

私は を試してみました他に何私は私が作ったかどうかをテストしたかった:コマンドを実行すると、長いスタックトレースする前に、次のエラーを与える、ファイルを更新して保存した後 何が起こった

ライブラリを追加する間違い。私は最初から新しいclojureプロジェクトを作成し、lein depsを使用してjarfileを作成してからlein uberjarを作成しました。次に、uap-cljを新しいプロジェクトの依存関係に追加しました。プロジェクト.cljを保存し、lein depslein uberjarを再度実行しました。 jarファイルを正常に作成できたので、ライブラリを正しく追加していると思います。

別の依存関係を含む行為が私にjarfileを作成させることを妨げる別の理由は考えられません。あなたが私が提供した情報に基づいて確認すべき何かを考えることができれば、それは私を非常に助けます。ありがとうございました!

答えて

4

参照されるライブラリはClojure 1.7.0に依存するようですが、明示的にバージョン1.6.0を参照しています。

変更してみてください:

[org.clojure/clojure "1.6.0"] 

に:[uap-clj "1.0.1"]

[org.clojure/clojure "1.7.0"] 

また、あなたは同じように、Clojureの1.7.0に依存しないライブラリの古いバージョンを参照することができ

+0

ありがとう!これは絶対に機能します!今私は常にバージョンを確認することを知っている。 –

関連する問題