我最近 - 就像今天一样 - 开始对学习使用clojure进行编程感兴趣。现在安装了最新版本的java jdk并下载leiningen脚本后,我按照后者的安装说明进行操作,特别是在http:/www.lispcast.com/clojure-ubuntu给出的安装说明。
现在,在运行lein version
并下载相关的jar文件之后,程序退出并显示有关未找到类的错误。有问题的错误如下:
线程“main”中的异常java.lang.ExceptionInInitializerError
at java.base / java.lang.Class.forName0(Native Method)
在java.base / java.lang.Class.forName(Class.java:375)>
在clojure.lang.RT.classForName(RT.java:2168)
在clojure.lang.RT.classForName(RT.java:2177)
在clojure.lang.RT.loadClassForName(RT.java:2196)
在clojure.lang.RT.load(RT.java:443)
在clojure.lang.RT.load(RT.java:419)
在clojure.core $ load $ fn__5677.invoke(core.clj:5893)
在clojure.core $ load.invokeStatic(core.clj:5892)
在clojure.core $ load.doInvoke(core.clj:5876)
在clojure.lang.RestFn.invoke(RestFn.java:408)
在clojure.core__init.load(未知来源)
在clojure.core__init。(未知来源)
at java.base / java.lang.Class.forName0(Native Method)
在java.base / java.lang.Class.forName(Class.java:375)
在clojure.lang.RT.classForName(RT.java:2168)
在clojure.lang.RT.classForName(RT.java:2177)
在clojure.lang.RT.loadClassForName(RT.java:2196)
在clojure.lang.RT.load(RT.java:443)
在clojure.lang.RT.load(RT.java:419)
在clojure.lang.RT.doInit(RT.java:461)
在clojure.lang.RT。(RT.java:331)
在clojure.main。(main.java:20)
引起:java.lang.ClassNotFoundException:java / sql / Timestamp
at java.base / java.lang.Class.forName0(Native Method)
在java.base / java.lang.Class.forName(Class.java:375)
在clojure.lang.RT.classForName(RT.java:2168)
在clojure.lang.RT.classForNameNonLoading(RT.java:2181)
在clojure.instant $ loading__5569__auto ____ 6869.invoke(instant.clj:9)
在clojure.instant__init.load(未知来源)
在clojure.instant__init。(未知来源)
... 23更多
我的java 9 jdk已安装在/usr/lib/jvm/java-9-oracle/bin/java
中,我的JAVA_HOME
变量设置为/usr/lib/jvm/java-9-oracle
但我也尝试了/usr/lib/jvm/java-9-oracle/bin
,以防万一。我正在运行xubuntu 16.04.3,如果这是重要的。我确实尝试将默认的java jdk设置回与xubuntu捆绑在一起的openjdk,但这也无济于事。
顺便说一句,整个问题的起源是因为我尝试运行REPL 在安装了草书插件之后的intellij中,这不起作用。然后我猜测可能是因为我之前没有安装leiningen(我认为IDE和草书会捆绑在一起)。然而,关于intellij和clojure成功运行所需的实际信息却让我望而却步,因为大部分信息都是“分散的”,我不确定我是否遗漏了一些东西。
在任何情况下,我都很难让一切工作 - 可能是因为我在谈到这些问题时还不是那么精明,只有一段时间才在Linux发行版上发表过以及对clojure完全不熟悉。如果我遗漏了一些明显的东西,我会道歉,但是有理由认为只有在证明是这样的情况下才会有明显的事情。
非常感谢任何和所有建议。
答案 0 :(得分:5)
这看起来像Java 9的新模块“模块”引起的问题:Clojure希望能够访问java.sql.Timestamp,但它不能。我没有跟上Java开发或Clojure开发的步伐,所以我不能确定这是你的问题,但它看起来对我来说。尝试使用早期的JDK。
答案 1 :(得分:0)
如果您不能降级您的JAVA版本,请运行lein upgrade 2.8.1或最新的Leiningen。 Leiningen已更新,包括对Java 9的支持。