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/project和 Wikipedia's entry on JAR Hell .
关于maven - Clojure 与同一库的不同主要版本的相互依赖性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35328825/