Clojure:Lein figwheel和ClassNotFoundException:javax.xml.bind.DatatypeConverter

时间:2019-06-26 18:53:39

标签: clojure clojurescript

我正在尝试在ClojureScript应用程序上运行lein figwheel,但不断出现此错误:

  

线程“ main”中的异常java.lang.ClassNotFoundException:   javax.xml.bind.DatatypeConverter,在以下位置编译:(cljs / closure.clj:1:1)   clojure.lang.Compiler.load(Compiler.java:7391)在   clojure.lang.RT.loadResourceScript(RT.java:372)在   clojure.lang.RT.loadResourceScript(RT.java:363)在   clojure.lang.RT.load(RT.java:453)在   clojure.lang.RT.load(RT.java:419)位于   clojure.core $ load $ fn__5677.invoke(core.clj:5893)在   clojure.core $ load.invokeStatic(core.clj:5892)在   clojure.core $ load.doInvoke(core.clj:5876)在   clojure.lang.RestFn.invoke(RestFn.java:408)在   clojure.core $ load_one.invokeStatic(core.clj:5697)在   clojure.core $ load_one.invoke(core.clj:5692)在   clojure.core $ load_lib $ fn__5626.invoke(core.clj:5737)在   clojure.core $ load_lib.invokeStatic(core.clj:5736)在   clojure.core $ load_lib.doInvoke(core.clj:5717)在   clojure.lang.RestFn.applyTo(RestFn.java:142)在   clojure.core $ apply.invokeStatic(core.clj:648)在   clojure.core $ load_libs.invokeStatic(core.clj:5774)在   clojure.core $ load_libs.doInvoke(core.clj:5758)在   clojure.lang.RestFn.applyTo(RestFn.java:137)在   clojure.core $ apply.invokeStatic(core.clj:648)在   clojure.core $ require.invokeStatic(core.clj:5796)位于   clojure.core $ require.doInvoke(core.clj:5796)位于   clojure.lang.RestFn.invoke(RestFn.java:3204)在   cljs.repl $ eval10915 $ loading__5569__auto ____ 10916.invoke(repl.cljc:9)     在cljs.repl $ eval10915.invokeStatic(repl.cljc:9)在   cljs.repl $ eval10915.invoke(repl.cljc:9)在   clojure.lang.Compiler.eval(Compiler.java:6927)在   clojure.lang.Compiler.eval(Compiler.java:6916)在   clojure.lang.Compiler.load(Compiler.java:7379)在   clojure.lang.RT.loadResourceScript(RT.java:372)在   clojure.lang.RT.loadResourceScript(RT.java:363)在   clojure.lang.RT.load(RT.java:453)在   clojure.lang.RT.load(RT.java:419)位于   clojure.core $ load $ fn__5677.invoke(core.clj:5893)在   clojure.core $ load.invokeStatic(core.clj:5892)在   clojure.core $ load.doInvoke(core.clj:5876)在   clojure.lang.RestFn.invoke(RestFn.java:408)在   clojure.core $ load_one.invokeStatic(core.clj:5697)在   clojure.core $ load_one.invoke(core.clj:5692)在   clojure.core $ load_lib $ fn__5626.invoke(core.clj:5737)在   clojure.core $ load_lib.invokeStatic(core.clj:5736)在   clojure.core $ load_lib.doInvoke(core.clj:5717)在   clojure.lang.RestFn.applyTo(RestFn.java:142)在   clojure.core $ apply.invokeStatic(core.clj:648)在   clojure.core $ load_libs.invokeStatic(core.clj:5774)在   clojure.core $ load_libs.doInvoke(core.clj:5758)在   clojure.lang.RestFn.applyTo(RestFn.java:137)在   clojure.core $ apply.invokeStatic(core.clj:648)在   clojure.core $ require.invokeStatic(core.clj:5796)位于   clojure.core $ require.doInvoke(core.clj:5796)位于   clojure.lang.RestFn.invoke(RestFn.java:1523)在   figwheel_sidecar.repl $ eval10909 $ loading__5569__auto ____ 10910.invoke(repl.clj:1)     在figwheel_sidecar.repl $ eval10909.invokeStatic(repl.clj:1)在   figwheel_sidecar.repl $ eval10909.invoke(repl.clj:1)在   clojure.lang.Compiler.eval(Compiler.java:6927)在   clojure.lang.Compiler.eval(Compiler.java:6916)在   clojure.lang.Compiler.load(Compiler.java:7379)在   clojure.lang.RT.loadResourceScript(RT.java:372)在   clojure.lang.RT.loadResourceScript(RT.java:363)在   clojure.lang.RT.load(RT.java:453)在   clojure.lang.RT.load(RT.java:419)位于   clojure.core $ load $ fn__5677.invoke(core.clj:5893)在   clojure.core $ load.invokeStatic(core.clj:5892)在   clojure.core $ load.doInvoke(core.clj:5876)在   clojure.lang.RestFn.invoke(RestFn.java:408)在   clojure.core $ load_one.invokeStatic(core.clj:5697)在   clojure.core $ load_one.invoke(core.clj:5692)在   clojure.core $ load_lib $ fn__5626.invoke(core.clj:5737)在   clojure.core $ load_lib.invokeStatic(core.clj:5736)在   clojure.core $ load_lib.doInvoke(core.clj:5717)在   clojure.lang.RestFn.applyTo(RestFn.java:142)在   clojure.core $ apply.invokeStatic(core.clj:648)在   clojure.core $ load_libs.invokeStatic(core.clj:5774)在   clojure.core $ load_libs.doInvoke(core.clj:5758)在   clojure.lang.RestFn.applyTo(RestFn.java:137)在   clojure.core $ apply.invokeStatic(core.clj:648)在   clojure.core $ require.invokeStatic(core.clj:5796)位于   clojure.core $ require.doInvoke(core.clj:5796)位于   clojure.lang.RestFn.invoke(RestFn.java:1523)在   figwheel_sidecar.system $ eval10903 $ loading__5569__auto ____ 10904.invoke(system.clj:1)     在figwheel_sidecar.system $ eval10903.invokeStatic(system.clj:1)在   figwheel_sidecar.system $ eval10903.invoke(system.clj:1)在   clojure.lang.Compiler.eval(Compiler.java:6927)在   clojure.lang.Compiler.eval(Compiler.java:6916)在   clojure.lang.Compiler.load(Compiler.java:7379)在   clojure.lang.RT.loadResourceScript(RT.java:372)在   clojure.lang.RT.loadResourceScript(RT.java:363)在   clojure.lang.RT.load(RT.java:453)在   clojure.lang.RT.load(RT.java:419)位于   clojure.core $ load $ fn__5677.invoke(core.clj:5893)在   clojure.core $ load.invokeStatic(core.clj:5892)在   clojure.core $ load.doInvoke(core.clj:5876)在   clojure.lang.RestFn.invoke(RestFn.java:408)在   clojure.core $ load_one.invokeStatic(core.clj:5697)在   clojure.core $ load_one.invoke(core.clj:5692)在   clojure.core $ load_lib $ fn__5626.invoke(core.clj:5737)在   clojure.core $ load_lib.invokeStatic(core.clj:5736)在   clojure.core $ load_lib.doInvoke(core.clj:5717)在   clojure.lang.RestFn.applyTo(RestFn.java:142)在   clojure.core $ apply.invokeStatic(core.clj:648)在   clojure.core $ load_libs.invokeStatic(core.clj:5774)在   clojure.core $ load_libs.doInvoke(core.clj:5758)在   clojure.lang.RestFn.applyTo(RestFn.java:137)在   clojure.core $ apply.invokeStatic(core.clj:648)在   clojure.core $ require.invokeStatic(core.clj:5796)位于   clojure.core $ require.doInvoke(core.clj:5796)位于   clojure.lang.RestFn.invoke(RestFn.java:930)在   figwheel_sidecar.repl_api $ eval9 $ loading__5569__auto ____ 10.invoke(repl_api.clj:1)     在figwheel_sidecar.repl_api $ eval9.invokeStatic(repl_api.clj:1)在   figwheel_sidecar.repl_api $ eval9.invoke(repl_api.clj:1)在   clojure.lang.Compiler.eval(Compiler.java:6927)在   clojure.lang.Compiler.eval(Compiler.java:6916)在   clojure.lang.Compiler.load(Compiler.java:7379)在   clojure.lang.RT.loadResourceScript(RT.java:372)在   clojure.lang.RT.loadResourceScript(RT.java:363)在   clojure.lang.RT.load(RT.java:453)在   clojure.lang.RT.load(RT.java:419)位于   clojure.core $ load $ fn__5677.invoke(core.clj:5893)在   clojure.core $ load.invokeStatic(core.clj:5892)在   clojure.core $ load.doInvoke(core.clj:5876)在   clojure.lang.RestFn.invoke(RestFn.java:408)在   clojure.core $ load_one.invokeStatic(core.clj:5697)在   clojure.core $ load_one.invoke(core.clj:5692)在   clojure.core $ load_lib $ fn__5626.invoke(core.clj:5737)在   clojure.core $ load_lib.invokeStatic(core.clj:5736)在   clojure.core $ load_lib.doInvoke(core.clj:5717)在   clojure.lang.RestFn.applyTo(RestFn.java:142)在   clojure.core $ apply.invokeStatic(core.clj:648)在   clojure.core $ load_libs.invokeStatic(core.clj:5774)在   clojure.core $ load_libs.doInvoke(core.clj:5758)在   clojure.lang.RestFn.applyTo(RestFn.java:137)在   clojure.core $ apply.invokeStatic(core.clj:648)在   clojure.core $ require.invokeStatic(core.clj:5796)位于   clojure.core $ require.doInvoke(core.clj:5796)位于   clojure.lang.RestFn.invoke(RestFn.java:408)在   user $ eval5.invokeStatic(form-init1038311299988387512.clj:1)在   user $ eval5.invoke(form-init1038311299988387512.clj:1)在   clojure.lang.Compiler.eval(Compiler.java:6927)在   clojure.lang.Compiler.eval(Compiler.java:6916)在   clojure.lang.Compiler.load(Compiler.java:7379)在   clojure.lang.Compiler.loadFile(Compiler.java:7317)在   clojure.main $ load_script.invokeStatic(main.clj:275)在   clojure.main $ init_opt.invokeStatic(main.clj:277)在   clojure.main $ init_opt.invoke(main.clj:277)在   clojure.main $ initialize.invokeStatic(main.clj:308)在   clojure.main $ null_opt.invokeStatic(main.clj:342)在   clojure.main $ null_opt.invoke(main.clj:339)在   clojure.main $ main.invokeStatic(main.clj:421)在   clojure.main $ main.doInvoke(main.clj:384)在   clojure.lang.RestFn.invoke(RestFn.java:421)在   clojure.lang.Var.invoke(Var.java:383)在   clojure.lang.AFn.applyToHelper(AFn.java:156)在   clojure.lang.Var.applyTo(Var.java:700)在   clojure.main.main(main.java:37)由以下原因引起:   java.lang.ClassNotFoundException:javax.xml.bind.DatatypeConverter在   java.base / java.net.URLClassLoader.findClass(URLClassLoader.java:471)     在   clojure.lang.DynamicClassLoader.findClass(DynamicClassLoader.java:69)     在java.base / java.lang.ClassLoader.loadClass(ClassLoader.java:588)     在   clojure.lang.DynamicClassLoader.loadClass(DynamicClassLoader.java:77)     在java.base / java.lang.ClassLoader.loadClass(ClassLoader.java:521)     在java.base / java.lang.Class.forName0(本机方法)处   java.base / java.lang.Class.forName(Class.java:398)在   clojure.lang.RT.classForName(RT.java:2168)在   clojure.lang.RT.classForNameNonLoading(RT.java:2181)在   cljs.closure $ eval12201 $ loading__5569__auto ____ 12202.invoke(closure.clj:9)     在cljs.closure $ eval12201.invokeStatic(closure.clj:9)在   cljs.closure $ eval12201.invoke(closure.clj:9)在   clojure.lang.Compiler.eval(Compiler.java:6927)在   clojure.lang.Compiler.eval(Compiler.java:6916)在   clojure.lang.Compiler.load(Compiler.java:7379)... 153个以上

我已经检查了我的开发环境,并确认我正在运行Java 11,并且我具有最新版本的lein。我可以在网上找到的小信息是这是Java 9问题,但除此之外没有别的了。知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

几个月前,我遇到了这个问题。做一个lein deps :tree。您的依赖项之一是使用过时的库。您还应该使用the lein-ancient plugin来确保所有直接依赖项都是最新的。

一旦升级了所有库,问题就会消失。如果它是包含过期的lib的3级dep,则将该lib(具有最新版本)放在lein :dependencies的顶部(当存在多个dep版本时,lein遵循“第一个获胜”的规则)。 / p>


此外 ,您应该考虑升级到Figwheel-Main。它比原始无花果轮更容易使用 。它还允许您使用Clojure Deps构建系统而不是lein,这也将大大简化CLJS开发。

答案 1 :(得分:0)

使用Java 9发行的JDK进行模块化之后,它的某些部分在标准捆绑包中不再可用。 javax.xml.bind.DatatypeConverter属于java.xml.bind模块中的情况。

可能只是对您所使用的最新库/工具的简单升级,但是如果您确实需要该依赖项,则应将其指定为java arg:--add-modules java.xml.bind(请参阅{{ 3}}以获取更多详细信息。