leiningen无法运行因为java类未找到异常

时间:2017-09-30 01:54:33

标签: java linux intellij-idea clojure leiningen

我最近 - 就像今天一样 - 开始对学习使用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完全不熟悉。如果我遗漏了一些明显的东西,我会道歉,但是有理由认为只有在证明是这样的情况下才会有明显的事情。

非常感谢任何和所有建议。

2 个答案:

答案 0 :(得分:5)

这看起来像Java 9的新模块“模块”引起的问题:Clojure希望能够访问java.sql.Timestamp,但它不能。我没有跟上Java开发或Clojure开发的步伐,所以我不能确定这是你的问题,但它看起来对我来说。尝试使用早期的JDK。

答案 1 :(得分:0)

如果您不能降级您的JAVA版本,请运行lein upgrade 2.8.1或最新的Leiningen。 Leiningen已更新,包括对Java 9的支持。