代码之家  ›  专栏  ›  技术社区  ›  manandearth

Clojure gorilla repl和JVM 10异常

  •  2
  • manandearth  · 技术社区  · 6 年前

    Linux Manjaro 17.1.11版

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

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

    启动新项目进行测试 gorilla-repl :

    $ lein new app gorilla-test
    

    向project.clj添加了gorilla:

    :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上的http工具包有一个封闭的问题 here . 建议在项目中添加以下内容.clj

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

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

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

    如果有其他配置JVM的方法(当然有),我不知道该怎么做。。。 我通过搜索找到了许多对异常的引用,但没有一个引用假定不了解JVM机制。。。

    示例: 1 2

    编辑(一轮工作):

    决定回滚到JVM 8,Java 1.8。

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

    作品!

    也许它可以在新的Java运行时中工作,但是我决定一次按下所有的按钮。。。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Juraj Martinka    6 年前

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

    您可以修改原始插件并将jaxb api添加到其依赖项中(我在本文中做了以下工作: 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"]])