Clojure gorilla repl 和 JVM 10 异常

Clojure gorilla repl and JVM 10 exception

Linux Manjaro 17.1.11

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

Java10.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, compiling:(org/httpkit/server.clj:1:1) .....

.....

.....

Caused by: 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 选项没有帮助,java 启动选项我尝试在 shell 中使用 export,但是这导致了 JVM 致命异常。

如果有另一种配置 JVM 的方法(当然有),我不知道该怎么办... 我通过搜索找到了许多对异常的引用,但是 none 假设不了解 JVM 机制...

例子:

编辑(循环工作):

决定回滚到 JVM 8,Java1.8。

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

有效!

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

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

您可以修改原始插件并将 jaxb-api 添加到它的依赖项中(我在这个 PR 中所做的:https://github.com/JonyEpsilon/lein-gorilla/pull/12)或者您可以 "fake it" 添加 jaxb- api 到 project.clj 中的 :plugins 向量:

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