Clojure大猩猩repl和JVM 10异常

时间:2018-07-22 15:12:10

标签: clojure jvm leiningen

Linux Manjaro 17.1.11

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

Java 10.0.1 OpenJDK 64位服务器VM上的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选项无济于事,而我尝试在外壳程序中使用export的java启动选项却使JVM致命异常。

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

示例: 1 2

编辑(一个回合):

决定回滚到JVM 8,Java 1.8。

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

工作!

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

1 个答案:

答案 0 :(得分:2)

另一个选择是添加[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添加到{{1}中来“伪造”它}向量在您的project.clj中:

:plugins