簡體   English   中英

添加clojure依賴項並運行lein uberjar會導致java.lang.IllegalAccessError

[英]Adding clojure dependency and running lein uberjar causes java.lang.IllegalAccessError

我是一名具有編寫PHP,python和ruby經驗的新手工程師。 我正在努力為一個用clojure編寫的項目做出貢獻。 我試圖在項目中添加一個庫,但在添加庫並運行lein uberjar ,我收到一個錯誤。 我想知道它的含義以及是否可以推薦一種方法來排除故障。 預先感謝您的幫助!

我想要實現目標在我的項目中包含uap-clj庫並將項目編譯為jar文件。

我寫的內容我已經將庫添加為依賴項列表中的倒數第二項。

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

我在lein中運行的 根據github上的說明 ,將我的更改保存到project.clj之后,我運行lein deps然后lein clean && lein uberjar

發生了什么更新並保存文件后,運行該命令會在長堆棧跟蹤之前出現以下錯誤:

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然后lein uberjar創建了一個lein uberjar 接下來,我將uap-clj添加到我的新項目中的:dependencies,保存了project.clj,並再次執行了lein depslein uberjar 我能夠成功創建一個jar文件,所以我相信我正在正確地添加庫。

我想不出包含另一個依賴項的行為會阻止我創建jar文件的另一個原因。 如果你能想到我應該根據我提供的信息檢查一下,那對我非常有幫助。 謝謝!

看起來引用的庫依賴於Clojure 1.7.0,但您明確引用了1.6.0版本。

嘗試改變:

[org.clojure/clojure "1.6.0"]

至:

[org.clojure/clojure "1.7.0"]

或者,您可以引用不依賴於Clojure 1.7.0的舊版本庫,例如: [uap-clj "1.0.1"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM