添加 clojure 依赖项和 运行 lein uberjar 导致 java.lang.IllegalAccessError
Adding clojure dependency and running lein uberjar causes java.lang.IllegalAccessError
我是一名新手工程师,有编写 PHP、python 和 ruby 的经验。我正在尝试为一个用 clojure 编写的项目做出贡献。我正在尝试向项目中添加一个库,但是在添加该库并 运行ning lein uberjar
之后,我收到了一个错误。我想知道这是什么意思,您是否可以推荐一种故障排除方法。预先感谢您的帮助!
我想要达到的目标
在我的项目中包含 uap-clj library 并将项目编译成 jarfile。
我写的
我已将该库添加为依赖项列表中的倒数第二项。
:dependencies [[lots-of-dependencies]
[uap-clj "1.1.1"] ; user agent parser
[another-dependency]]
我运行在莱因
According to the instructions on github,在保存对 project.clj 的更改后,我 运行 lein deps
然后 lein clean && lein uberjar
。
发生了什么
更新并保存文件后,运行ning 命令在长堆栈跟踪之前给出以下错误:
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
创建了一个 jarfile。接下来,我将 uap-clj 添加到新项目的 :dependencies 中,保存 project.clj,然后再次执行 lein deps
和 lein uberjar
。我能够成功创建一个 jarfile,所以我相信我添加的库是正确的。
我想不出包含另一个依赖项的行为会阻止我创建 jarfile 的另一个原因。如果您能根据我提供的信息想到我应该检查的内容,那将对我有很大帮助。谢谢!
看起来引用的库依赖于 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"]
我是一名新手工程师,有编写 PHP、python 和 ruby 的经验。我正在尝试为一个用 clojure 编写的项目做出贡献。我正在尝试向项目中添加一个库,但是在添加该库并 运行ning lein uberjar
之后,我收到了一个错误。我想知道这是什么意思,您是否可以推荐一种故障排除方法。预先感谢您的帮助!
我想要达到的目标 在我的项目中包含 uap-clj library 并将项目编译成 jarfile。
我写的 我已将该库添加为依赖项列表中的倒数第二项。
:dependencies [[lots-of-dependencies]
[uap-clj "1.1.1"] ; user agent parser
[another-dependency]]
我运行在莱因
According to the instructions on github,在保存对 project.clj 的更改后,我 运行 lein deps
然后 lein clean && lein uberjar
。
发生了什么 更新并保存文件后,运行ning 命令在长堆栈跟踪之前给出以下错误:
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
创建了一个 jarfile。接下来,我将 uap-clj 添加到新项目的 :dependencies 中,保存 project.clj,然后再次执行 lein deps
和 lein uberjar
。我能够成功创建一个 jarfile,所以我相信我添加的库是正确的。
我想不出包含另一个依赖项的行为会阻止我创建 jarfile 的另一个原因。如果您能根据我提供的信息想到我应该检查的内容,那将对我有很大帮助。谢谢!
看起来引用的库依赖于 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"]