java - 所有版本的 Clojure jar 报告为 Clojure-1.7.0-RC1,无论实际版本如何

标签 java clojure

当我从 Maven Central 或官方网站下载一份 Clojure(1.8.0 或任何其他版本)时,它声称是版本 1.7.0-RC1

例如:

$ java -jar clojure-1.8.0.jar Clojure 1.7.0-RC1 用户=>

这似乎也是实际运行的版本。由于在 1.8.0 中添加的函数(特别是 string/starts-with?)在 repl 中不可用(导入后)。

当文件的相同副本(由 shasum 验证)下载到另一台笔记本电脑上时,正确的版本将运行。

我已经用多个版本验证了这一点,包括 1.8.01.9.0-alpha171.5.0-RC2。它们都报告为 1.7.0-RC1

附加信息:

$ java -version Java(TM) SE 运行时环境(build 1.8.0_60-b27) Java HotSpot(TM) 64 位服务器 VM(构建 25.60-b23,混合模式)

使用 macOS 版本 10.12.3

最佳答案

如果您安装了较旧的 Clojure 1.7.0-RC1<,则另一个(较旧的)版本的 Clojure .jar 可能会加载并覆盖命令行(或类路径)中指定的版本 作为 "Java Extension" on macOS .实际上,您报告的行为是由于将 1.7.0 .jar 放在 /Library/Java/Extensions/~/Library/Java/Extensions/(在您的主目录下)。

一个简单的解决方案是从 Extensions 文件夹中删除 jar 文件。

Java Development Guide for Mac实际上警告使用 Extensions 目录的危险,因为它可能导致这样的问题:

Try to include all of your dependent libraries in your application rather than relying on the Java Extensions directory, because its contents are unversioned and cannot accommodate for multiple versions of the same library.

关于java - 所有版本的 Clojure jar 报告为 Clojure-1.7.0-RC1,无论实际版本如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45003622/

相关文章:

clojure - 将模式和结果作为向量传递给 core.match/match 的宏

clojure - Datomic 中多个属性的全文搜索

windows - 试图运行 lein repl 并且无法将工件 org.clojure :tools. nrepl :pom:0. 2.3 从/转移到中央

java - 我不断收到 "OAuth consumer key/secret combination not supplied"错误消息

java - 初始化 double 及其 getter

java - 是否有类似库的 Commons AnnotationUtils? ( java )

multithreading - Clojure的平行剂量q

clojure - 将映射键和值转换为字符串数组

java - JSpeex 解码不工作

java - 静态建议。我究竟做错了什么?