java - leiningen 无法运行,因为 java class not found 异常

标签 java linux intellij-idea clojure leiningen

我最近——就像今天一样——对学习使用 clojure 进行编程产生了兴趣。现在,在安装了最新版本的 java jdk 并下载了 leiningen 脚本之后,我按照后者的安装说明进行操作,特别是在以下位置给出的说明:http:/www.lispcast.com/clojure-ubuntu。 .

现在,在运行 lein version 并下载相关的 jar 文件后,程序退出并出现有关找不到类的错误。有问题的错误内容如下:

Exception in thread "main" java.lang.ExceptionInInitializerError
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:375)>
at clojure.lang.RT.classForName(RT.java:2168)
at clojure.lang.RT.classForName(RT.java:2177)
at clojure.lang.RT.loadClassForName(RT.java:2196)
at clojure.lang.RT.load(RT.java:443)
at clojure.lang.RT.load(RT.java:419)
at clojure.core$load$fn__5677.invoke(core.clj:5893)
at clojure.core$load.invokeStatic(core.clj:5892)
at clojure.core$load.doInvoke(core.clj:5876)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core__init.load(Unknown Source)
at clojure.core__init.(Unknown Source)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:375)
at clojure.lang.RT.classForName(RT.java:2168)
at clojure.lang.RT.classForName(RT.java:2177)
at clojure.lang.RT.loadClassForName(RT.java:2196)
at clojure.lang.RT.load(RT.java:443)
at clojure.lang.RT.load(RT.java:419)
at clojure.lang.RT.doInit(RT.java:461)
at clojure.lang.RT.(RT.java:331)
at clojure.main.(main.java:20)
Caused by: java.lang.ClassNotFoundException: java/sql/Timestamp
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:375)
at clojure.lang.RT.classForName(RT.java:2168)
at clojure.lang.RT.classForNameNonLoading(RT.java:2181)
at clojure.instant$loading__5569__auto____6869.invoke(instant.clj:9)
at clojure.instant__init.load(Unknown Source)
at clojure.instant__init.(Unknown Source)
... 23 more

我的 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 安装 cursive 插件后,它不起作用。然后我推测这可能是因为我没有事先安装 leiningen(我认为 IDE 和 cursive 会把它捆绑在一起)。然而,关于成功运行 intellij 和 clojure 需要什么的实际信息却让我望而却步,因为大部分信息相当“分散”,我不确定我是否错过了一些东西。

无论如何,我很难让所有东西都正常工作——可能是因为我对这类问题还不是很精通,我只接触过 linux 发行版一段时间以及完全不熟悉clojure。如果我遗漏了一些明显的东西,我深表歉意,但按理说,某些东西只有在被证明是显而易见的情况下才能变得明显。

我们将不胜感激任何和所有建议。

最佳答案

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

关于java - leiningen 无法运行,因为 java class not found 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46498861/

相关文章:

linux - 将命令连接在一起

java - 如何在 RESTful WS 中隐藏带有条件的字段?

java - JmsTemplate 与 IBM MQ 队列的 CachingConnectionFactory 连接恢复

linux - 在 Linux 中搜索与特定模式匹配的所有子文件夹中的文件

linux - Perl 脚本执行不断被终止 - 内存不足

intellij-idea - 无法在intelliJ中复制简单的akka​​项目

java - 实现的 LinkedQueue 中的 pop 方法正在删除所有值,而不是第一个值

java - 无法在 IntelliJ Idea 2016.1.1 中导入 maven 项目

java - 默认情况下 LocalDateTime 不是 ISO8601

java - HashMap 对象键