【问题标题】:Clojure gorilla repl and JVM 10 exceptionClojure gorilla repl 和 JVM 10 异常
【发布时间】:2018-12-30 04:16:14
【问题描述】:

Linux Manjaro 17.1.11

OpenJDK 64 位服务器 VM(内部版本 10.0.1+10,混合模式)

Java 10.0.1 OpenJDK 64 位服务器虚拟机上的 Leiningen 2.8.1

开始一个新项目进行测试gorilla-repl

$ lein new app gorilla-test

在 project.clj 中添加了大猩猩:

:plugins [[lein-gorilla "0.4.0"]] 

运行时获取异常:

$ lein gorilla

例外:

clojure.lang.Compiler$CompilerException: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter, 编译:(org/httpkit/server.clj:1:1) .....

.....

.....

原因:java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter

......

......

试过了:

在 github here 上有一个关于 http-kit 的已解决问题。建议在project.clj中添加以下内容

:jvm-opts ["--add-modules" "java.xml.bind”]

或添加到java启动:--add-modules java.xml.bind

lein 选项没有帮助,我尝试在 shell 中使用 export 的 java 启动选项,但这会导致 JVM 致命异常。

如果有另一种方式来配置 JVM(当然有)我不知道我的方式...... 我通过搜索发现了许多对异常的引用,但没有一个假设不了解 JVM 机制...

例子: 1 2

编辑(循环工作):

决定回滚到 JVM 8、Java 1.8。

我还在 clojars.com 上找到了更新版本的 gorilla repl。然后去找this one

有效!

也许它可以与新的 Java 运行时一起使用,但我决定一次按下所有按钮...

【问题讨论】:

  • 什么“JVM 致命异常”?
  • 这是一个阻止java启动的异常,我现在想不起来细节了,因为我尝试了很多东西。最后我恢复到java 1.8。我现在将其添加为编辑。

标签: clojure jvm leiningen


【解决方案1】:

另一种选择是将[javax.xml.bind/jaxb-api "2.3.0"] 添加为依赖项。 但是,与 :jvm-opts 类似,依赖项不适用于插件(如 lein-gorilla),因为它们是单独运行的。

您可以修改原始插件并将 jaxb-api 添加到其依赖项(我在此 PR 中所做的:https://github.com/JonyEpsilon/lein-gorilla/pull/12),或者您可以通过将 jaxb-api 添加到您的 :plugins 向量来“伪造它”项目.clj:

:plugins [[javax.xml.bind/jaxb-api "2.3.0"]
         [lein-gorilla "0.4.0"]])

【讨论】:

  • 我可以看到这应该如何工作。我现在无法测试它,因为我现在回到了一个版本。
猜你喜欢
  • 2011-12-27
  • 1970-01-01
  • 2013-02-03
  • 2013-06-26
  • 1970-01-01
  • 2011-05-07
  • 1970-01-01
  • 2015-02-24
相关资源
最近更新 更多