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

时间:2016-02-11 00:42:45

标签: maven clojure leiningen

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

我遇到Clojure / Lein的问题。我正在开发一个使用两个不相关的外部库/项目的项目。两个都使用Sesame RDF库。其中一个是Any23,它使用芝麻2.x,但另一个使用版本4.x。问题是Any23不适用于芝麻4.x,而其他库不适用于芝麻2.x

这意味着我的:exclusions文件中的project.clj个或其中一个将无效。

是否存在解决此类依赖性问题的解决方案或者我遇到了什么问题?

1 个答案:

答案 0 :(得分:2)

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

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

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