当我从Maven Central或官方网站下载Clojure(1.8.0
或任何其他版本)的副本时,它将声称是版本1.7.0-RC1
。
例如:
$ java -jar clojure-1.8.0.jar
Clojure 1.7.0-RC1
user=>
事实上,这似乎也是运行的版本。由于在1.8.0中添加的功能(特别是string/starts-with?
)在repl中不可用(导入后)。
如果在单独的笔记本电脑上下载了相同的文件副本(由shasum验证),则会运行正确的版本。
我已对多个版本进行了验证,包括1.8.0
,1.9.0-alpha17
和1.5.0-RC2
。所有这些都报告为1.7.0-RC1
。
其他信息:
$ java -version
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)
使用macOS版本10.12.3
。
答案 0 :(得分:3)
如果您已将较旧的.jar
安装为"Java Extension" on macOS,则Clojure Clojure 1.7.0-RC1
的另一个(较旧)版本可能会加载并覆盖在命令行(或类路径)上指定的版本。实际上,您报告的行为是将1.7.0 .jar
放入/Library/Java/Extensions/
或~/Library/Java/Extensions/
(位于您的主目录下)。
一个简单的解决方案是从Extensions文件夹中删除jar
文件。
Java Development Guide for Mac实际上警告使用Extensions目录的危险,因为它可能导致此类问题:
尝试在应用程序中包含所有依赖库,而不是依赖Java Extensions目录,因为它的内容是无版本的,不能容纳同一个库的多个版本。