Clojure China

巨坑,jetty版本冲突(已完结)

clojure
#1

project.clj:

handler.clj:

运行handler.clj报错:

问题定位:是selenium-server里的jetty版本过高,CachedHttpField在9.2.x有,9.3.x和9.4.x就没了
解决方案:治标:selenium-server版本由 3.14.0回滚至2.47.0,依赖的jetty版本自然降为9.2.x
治本:怎么解决这种版本问题呢?难道要:exclusions 一大波jar包,再在:dependencies里手工指定版本?还请各位大佬不吝赐教。小弟感激不尽。
总结:clojure的包/依赖管理真心该学习pip,gem,npm。使用maven风格(pom.xml)的project.clj是不错,但至少IDEA应该搞个PyCharm一样的pip风格的包管理图形界面,可以随时切换包的版本。都是一家公司出的IDE,应该不难吧。

#2

包管理一直是个复杂的问题,在 Java 1.8 及之前,就是通过 exclusions 解决,1.9 的一新特性就是 module,专门用来解决类似问题。可以参考:

#3

感谢,受教了