maven - Clojure 与同一库的不同主要版本的相互依赖性问题

标签 maven clojure leiningen

Disclojure:我不是 Java 开发人员,而且我对 Maven 知之甚少。

我遇到了 Clojure/Lein 的问题。我正在开发一个使用两个不相关的外部库/项目的项目。两者都使用 Sesame RDF 库。其中之一是 Any23,它使用 Sesame 2.x,但另一个使用版本 4.x。问题是 Any23 无法与 Sesame 4.x 配合使用,而其他库也无法与 Sesame 2.x 配合使用。

这意味着我的 project.clj 文件中的 :exclusions 之一将不起作用。

是否有任何解决方案可以解决此类依赖关系问题,还是我陷入困境?

最佳答案

这个问题没有任何简单的答案。以下是一些选项:

  • 升级 Any23 以使用 Sesame 4.x
  • 使用类似 Maven Shade 的内容重命名 Sesame 包之一,以便它们可以加载到同一类路径上。如果您尝试在两个库之间使用或共享对象,您可能会遇到麻烦。
  • 使用Clojure OSGI隔离包。 (这可能是最困难的选择,尽管也是最“正确”的)。

有关详细信息,请参阅 Java, Classpath, Classloading => Multiple Versions of the same jar/projectWikipedia's entry on JAR Hell .

关于maven - Clojure 与同一库的不同主要版本的相互依赖性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35328825/

相关文章:

maven - maven-rpm-plugin 和 rpm-maven-plugin 有什么区别

clojure - mini-kanren cond-a cond-u 和 cond-e 有什么区别?

ClojureScript - 在 map 中存储函数

clojure - 如何在project.clj中引用环境变量或主目录

clojure - lein 的 "install"和 "jar"任务的配置文件

java - 在 REPL 中使用队列文字时出现 RuntimeException

java - 无法使字段最终 transient java.lang.Class java.util.EnumSet.elementType 可访问 : module java. 基不 "opens java.util"未命名

eclipse - 在Eclipse中给Tomcat服务器添加资源时,什么可以是资源?

java - 为什么我在一个全新的 webapp-javaee7 项目中出错

java - 如何沙盒 clojure.string/blank?在 Clojure 中使用 Clojail?