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"]])
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"]])