Leiningen Родительский › Дочерний › Ошибки зависимостей сторонних библиотек

Я использую leiningen для одновременной разработки двух проектов (см. Зависимости оформления заказа здесь). Это работает, и я дошел до того, что хочу развернуть обе библиотеки. Допустим, это lib-parent , который использует lib-child.

Теперь я развернул lib-child в clojars (lein deploy clojars). Но если я сейчас включу lib-child в качестве зависимости проекта в lib-parent, я не смогу загрузить lib-child, потому что один из < strong>его зависимости (Datomic и его использование com.google.common.cache.Cache) не загружаются. Выполнение (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)

Спасибо


person Nutritioustim    schedule 10.10.2013    source источник
comment
Вы подтвердили, что зависимость lib-child datomic находится в сгенерированном pom.xml?   -  person Jared314    schedule 10.10.2013
comment
Кроме того, когда вы запускаете lein deps :tree в проекте lib-parent, вы видите [com.google.guava/guava "14.0.1"]?   -  person Jared314    schedule 10.10.2013
comment
@Jared314, привет. Да, lein deps :tree дает [com.google.guava/guava r09]. Но это в разделе [com.datomic/datomic 0.8.3335 ..., а не [com.datomic/datomic-free 0.8.4143 .. ..   -  person Nutritioustim    schedule 11.10.2013


Ответы (1)


Хорошо, исправил это. Удалены все :exclusions в объявлении Datomic, которое я использовал, в проекте lib-child. Спасибо @hyPiRion на #leiningen @irc.freenode.org.

person Nutritioustim    schedule 11.10.2013