当前位置: 首页 > 知识库问答 >
问题:

运行clojure-1.9时出现异常。0.jar:缺少clojure/spec/alpha\u init。类和clojure/spec/alpha。clj

耿永寿
2023-03-14

Leiningen下载了clojure-1.9。0.jar作为依赖项。它位于~/。m2/repository/org/clojure/clojure/1.9。0。通过lein repl,它可以正常工作。

但是,如果(从~/. m2/repository/org/Clojure/Clojure我运行java-jar 1.9.0/clojure-1.9.0.jar,而不是预期的行为(REPL的启动),我得到一个异常

找不到clojure/spec/alpha\u init。类或clojure/spec/alpha。类路径上的clj

对于其他Clojure版本(1.8.0、1.6.0、1.4.0),我得到了预期的REPL。

那么clojure-1.9.0.jar--或者我的设置-或者我的理解有什么问题?

注意:
如果我在包含Clojure 1.9项目的目录中运行lein repl。0依赖关系我得到了Clojure 1.9的REPL。0,但如果我从任何其他目录启动Leiningen,我会得到Clojure 1.8的REPL。在这两种情况下,REPL版本都是REPL-y0.3。7,nREPL 0.2。12。运行lein-upgrade会显示消息Leiningen已经是最新的


共有2个答案

丁星火
2023-03-14

这些类已被拆分,您可以在此处下载缺少的JAR:

  • 规范α-规范实施
鱼宜
2023-03-14

Clojure 1.9。0是模块化的,规范支持分为两个独立的jar,它们必须位于类路径上。

看https://clojure.org/news/2017/12/08/clojure19

正如Alex Miller指出的,新的clj工具将自动为您处理这些问题。

 类似资料:
  • 引导任务boot cljs repl提供了一种连接到ClojureScript repl的方法,ClojureScript repl与正在运行的浏览器实例交互。 如果正确地添加到build.boot依赖项中,可以从Clojure repl中调用函数,以便启动ClojureScript REPL。 我正在使用Emacs通过苹果酒软件包连接clojure REPL,该软件包具有以下功能: 我试图弄清楚

  • Clojure是一种LISP风格的语言,运行在JVM上。Clojure的一大特色就是其并发机制,它支持不可变的数据结构(Clojure是来自于可持久化的数据结构)。Clojure还有一个特色是软件事务存储(Software Transactional Memory,STM),其支持用事务代替锁和互斥器来更新共享内存。STM还是一个有争议的技术,还需要更好的证明自己,一个简单的办法就是访问一个JVM上的实现。

  • 从Clojoure调用Java非常简单明了,但反过来已被证明是不可预测的。 它们似乎有两种方式: 1)以下类别 2) 将clojure编译成uberjar,然后将其导入java代码。 我选择了第二个选项,因为它更直接。 这是clojure代码 这是Java代码。 当我做出“service.returned(4);”时,系统永远不会返回。我不太明白为什么对我来说,它会像函数没有从Clojure返回一

  • 本文向大家介绍clojure is,包括了clojure is的使用技巧和注意事项,需要的朋友参考一下 示例 该is宏是核心clojure.test库。它返回其主体表达式的值,如果该表达式返回假值,则输出错误消息。            

  • 我用lein uberjar创建了一个uberjar,我可以通过以下方式在我的机器上运行它(安装了java 1.8): 在我想要部署它的服务器上,出现了一个错误。然而,这里只安装了java 1.5版。以下是错误消息和完整的版本说明:

  • Storm配有Clojure DSL,用于定义spouts(喷口),bolts(螺栓)和topologies(拓扑)。 Clojure DSL可以访问Java API暴露的所有内容,因此如果您是Clojure用户,您可以直接编写Storm拓扑,根本不需要使用Java。 Clojure DSL 的源码在 org.apache.storm.clojure命名空间中定义。 本页概述了Clojure DS