【问题标题】:leiningen cannot run because of java class not found exceptionleiningen 无法运行,因为找不到 java 类异常
【发布时间】:2018-03-11 22:49:59
【问题描述】:

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

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

线程“主”java.lang.ExceptionInInitializerError 中的异常
在 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.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.(未知来源)
在 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.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
在 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.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。如果我遗漏了一些明显的东西,我深表歉意,但按理说,某些东西只有在被证明是显而易见的时候才能变得明显。

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

【问题讨论】:

    标签: java linux intellij-idea clojure leiningen


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-05-28
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-15
      相关资源
      最近更新 更多