我最近(今天)对学习使用Clojure编程感兴趣。现在,在安装了Java的最新版本的jdk并下载了leiningen脚本之后,我按照了后者的安装说明进行操作,尤其是在http://www.lispcast.com/clojure-ubuntu上给出的说明。
现在,在运行lein version
并下载了相关的jar文件之后,程序退出,并显示有关找不到类的错误。有问题的错误如下:
clojure处的java.base / java.lang.Class.forName0(Native Method)
处的线程“ main”中的java.lang.ExceptionInInitializerError异常
。 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)
at clojure.core__init.load(未知源)
位于clojure.core__init。(来源不明)
在java.base / java.lang.Class.forName0(本机方法)
在java.base / java.lang.Class.forName(Class.java:375)
在clojure.lang.RT.classForName(RT.java:2168)
在clojure.lang.RT.load.RT.load(RT.java:443)
在clojure.lang.RT.loadClassForName(RT.java:2196)
在clojure.lang.RT.classForName(RT.java:2177)
在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.base / java.lang.Class.forName0(本地方法)
上的java / sql / Timestamp (java.base / java.lang.Class.forName(Class.java:375)
在clojure.lang.RT.classForName(RT.java:2168)
在clojure.instant__init.load(未知源)在clojure.instant__init.load(未知源)
在clojure.instant $ loading__5569__auto ____ 6869.invoke(instant.clj:9)
在clojure.lang.RT.classForNameNonLoading(RT.java:2181)处。 .. 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,但这也无济于事。
顺便说一句,整个问题都源于我在安装草书插件后尝试在intellij中运行REPL,但无法正常工作。然后我推测这可能是因为我没有预先安装leiningen(我认为IDE和草书将把它捆绑在一起)。但是,关于Intellij和clojure成功运行所需的实际信息使我难以理解,因为很多信息都是“分散的”,而且我不确定在此过程中是否遗漏了一些信息。
在任何情况下,我都很难使所有功能正常工作-可能是因为在涉及这类问题时我还不那么精明,仅在Linux发行版上呆了片刻,完全不了解clojure。如果我遗漏了一些明显的东西,我深表歉意,但这是有道理的,只有当证明某种东西是显而易见的时,它才是显而易见的。
任何和所有建议将不胜感激。
这似乎是由Java 9的新“模块”概念引起的问题:Clojure希望能够访问java.sql.Timestamp,但不能。我还没有跟上Java开发或Clojure开发的步伐,所以我不能肯定地说这是您的问题,但是对我来说看起来是这样。尝试使用早期的JDK。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句