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机制...
编辑(一个回合):
决定回滚到JVM 8,Java 1.8。
我还在clojars.com中找到了较新版本的大猩猩repl。然后去了this one
工作!
也许可以在新的Java运行时中使用,但是我决定一次按下所有按钮...
答案 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