我正在尝试在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问题,但除此之外没有别的了。知道如何解决这个问题吗?
答案 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}}以获取更多详细信息。