我正在使用leiningen同时开发2个项目(参见 Checkout Dependencies here)。这是有效的,我已经达到了我想要部署两个库的程度。假设它们是 lib-parent ,它使用 lib-child 。
现在,我已将 lib-child 部署到clojars(lein deploy clojars
)。但是如果我现在将 lib-child 作为项目依赖项包含在 lib-parent 中,我就无法加载 lib-child ,因为< strong> 依赖项(Datomic及其对 com.google.common.cache.Cache 的使用)无法加载。在repl上运行(require 'lib-child.plugin)
将为我提供 ClassNotFoundException:com.google.common.cache.Cache 。
这是 i) 一般的leiningen依赖性问题还是 ii) Datomic的一个问题没有全部解决它的依赖关系?我正在使用[com.datomic/datomic-free "0.8.4143" :exclusions [org.slf4j/slf4j-nop org.slf4j/log4j-over-slf4j]]
。
user=> (require 'lib-child.plugin)
SLF4J: Failed to load class "org.slf4j.impl.StaticMDCBinder".
SLF4J: Defaulting to no-operation MDCAdapter implementation.
SLF4J: See http://www.slf4j.org/codes.html#no_static_mdc_binder for further details.
ClassNotFoundException com.google.common.cache.Cache java.net.URLClassLoader$1.run (URLClassLoader.java:366)
user=> (pst *e)
ExceptionInInitializerError
java.lang.Class.forName0 (Class.java:-2)
java.lang.Class.forName (Class.java:270)
clojure.lang.RT.loadClassForName (RT.java:2098)
clojure.lang.RT.load (RT.java:430)
clojure.lang.RT.load (RT.java:411)
clojure.core/load/fn--5018 (core.clj:5530)
clojure.core/load (core.clj:5529)
clojure.core/load-one (core.clj:5336)
clojure.core/load-lib/fn--4967 (core.clj:5375)
clojure.core/load-lib (core.clj:5374)
clojure.core/apply (core.clj:619)
clojure.core/load-libs (core.clj:5413)
Caused by:
ClassNotFoundException com.google.common.cache.Cache
java.net.URLClassLoader$1.run (URLClassLoader.java:366)
java.net.URLClassLoader$1.run (URLClassLoader.java:355)
java.security.AccessController.doPrivileged (AccessController.java:-2)
java.net.URLClassLoader.findClass (URLClassLoader.java:354)
java.lang.ClassLoader.loadClass (ClassLoader.java:424)
sun.misc.Launcher$AppClassLoader.loadClass (Launcher.java:308)
java.lang.ClassLoader.loadClass (ClassLoader.java:357)
java.lang.Class.forName0 (Class.java:-2)
java.lang.Class.forName (Class.java:190)
datomic.cache__init.__init0 (:-1)
datomic.cache__init.<clinit> (:-1)
java.lang.Class.forName0 (Class.java:-2)
谢谢
答案 0 :(得分:0)
好的,修好了。在 lib-child 项目中删除了我使用的Datomic声明中的所有:exclusions
。感谢@leiningen @ irc.freenode.org上的@hyPiRion。