簡體   English   中英

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

[英]Clojure: Lein figwheel and ClassNotFoundException: javax.xml.bind.DatatypeConverter

我正在嘗試在 ClojureScript 應用程序上運行 lein figwheel,但我不斷收到此錯誤:

線程“主”java.lang.ClassNotFoundException 中的異常:javax.xml.bind.DatatypeConverter,clojure 的 clojure.lang.Compiler.load(Compiler.java:7391) 處的編譯:(cljs/closure.clj:1:1) .lang.RT.loadResourceScript(RT.java:372) 在 clojure.lang.RT.loadResourceScript(RT.java:363) 在 clojure.lang.RT.load(RT.java:453) 在 clojure.lang.RT。在 clojure.core$load$fn__5677.invoke(core.clj:5893) 在 clojure.core$load.invokeStatic(core.clj:5892) 在 clojure.core$load.doInvoke(core .clj:5876) at clojure.lang.RestFn.invoke(RestFn.java:408) at clojure.core$load_one.invokeStatic(core.clj:5697) at 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) at clojure.core$apply.invokeStatic(core.clj:648) at clojure.core$load_libs.invokeStatic(core.clj:5774) at clojure.core$load_libs.doInvoke (核心.clj: 5758) 在 clojure.core$require.invokeStatic(core.clj:5796) 在 clojure.core$apply.invokeStatic(core.clj:648) 在clojure.lang.RestFn.applyTo(RestFn.java:137)。 core$require.doInvoke(core.clj:5796) at clojure.lang.RestFn.invoke(RestFn.java:3204) at cljs.repl$eval10915$loading__5569__auto____10916.invoke(repl.cljc:9) at cljs.repl$eval10915 .invokeStatic(repl.cljc:9) at cljs.repl$eval10915.invoke(repl.cljc:9) at clojure.lang.Compiler.eval(Compiler.java:6927) at 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.core$load$fn__5677.invoke(core.clj:5893) 在 clojure.core.lang.RT.load(RT.java:419) $load.invokeStatic(core.clj:5892) at clojure.core$load.doInvoke(core.clj:5876) at clojure.lang.RestFn.invoke(RestFn.java:408) at clojure.core$load_one.invokeStatic( core.clj:5697) 在 clojure.co re$load_one.invoke(core.clj:5692) at clojure.core$load_lib$fn__5626.invoke(core.clj:5737) at clojure.core$load_lib.invokeStatic(core.clj:5736) at clojure.core$load_lib .doInvoke(core.clj:5717) at clojure.lang.RestFn.applyTo(RestFn.java:142) at clojure.core$apply.invokeStatic(core.clj:648) at clojure.core$load_libs.invokeStatic(core. clj:5774) at clojure.core$load_libs.doInvoke(core.clj:5758) at clojure.lang.RestFn.applyTo(RestFn.java:137) at clojure.core$apply.invokeStatic(core.clj:648) at clojure.core$require.invokeStatic(core.clj:5796) at clojure.core$require.doInvoke(core.clj:5796) at clojure.lang.RestFn.invoke(RestFn.java:1523) at figwheel_sidecar.repl$eval10909 $loading__5569__auto____10910.invoke(repl.clj:1) at figwheel_sidecar.repl$eval10909.invokeStatic(repl.clj:1) at figwheel_sidecar.repl$eval10909.invoke(repl.clj:1) at 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) at clojure.core$load$fn__5677.invoke(core.clj:5893) at clojure.core$load.invokeStatic(core.clj:5892) at clojure.core$load.doInvoke(core.clj :5876) at clojure.lang.RestFn.invoke(RestFn.java:408) at clojure.core$load_one.invokeStatic(core.clj:5697) at clojure.core$load_one.invoke(core.clj:5692) at clojure .core$load_lib$fn__5626.invoke(core.clj:5737) at clojure.core$load_lib.invokeStatic(core.clj:5736) at clojure.core$load_lib.doInvoke(core.clj:5717) at clojure.lang。 RestFn.applyTo(RestFn.java:142) at clojure.core$apply.invokeStatic(core.clj:648) at clojure.core$load_libs.invokeStatic(core.clj:5774) at clojure.core$load_libs.doInvoke(core .clj:5758) at clojure.lang.RestFn.applyTo(RestFn.java:137) at clojure.core$apply.invokeStatic(core.clj:648) at clojure.core$require.invokeStatic(core.clj:5796)在 clojure.core$require.doInvoke(core. clj:5796) at clojure.lang.RestFn.invoke(RestFn.java:1523) at figwheel_sidecar.system$eval10903$loading__5569__auto____10904.invoke(system.clj:1) at figwheel_sidecar.system$eval10903.invokeStatic(system.clj:1 ) 在 clojure.lang.Compiler.eval(Compiler.java:6927) 在 clojure.lang.Compiler.eval(Compiler.java:6916) 在 clojure.lang 的 figwheel_sidecar.system$eval10903.invoke(system.clj:1) .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) at clojure.lang.RT.load(RT.java:419) at clojure.core$load$fn__5677.invoke(core.clj:5893) at clojure.core$load.invokeStatic(core.clj :5892) at clojure.core$load.doInvoke(core.clj:5876) at clojure.lang.RestFn.invoke(RestFn.java:408) at clojure.core$load_one.invokeStatic(core.clj:5697) at clojure .core$load_one.invoke(core.clj:5692) at clojure.core$load_lib$fn__5626.invoke(core.clj:5737) at clojure.core$load_lib.invokeStatic(core.clj:5736) at cl ojure.core$load_lib.doInvoke(core.clj:5717) at clojure.lang.RestFn.applyTo(RestFn.java:142) at clojure.core$apply.invokeStatic(core.clj:648) at clojure.core$load_libs .invokeStatic(core.clj:5774) at clojure.core$load_libs.doInvoke(core.clj:5758) at clojure.lang.RestFn.applyTo(RestFn.java:137) at clojure.core$apply.invokeStatic(core. clj:648) at clojure.core$require.invokeStatic(core.clj:5796) at clojure.core$require.doInvoke(core.clj:5796) at clojure.lang.RestFn.invoke(RestFn.java:930) at figwheel_sidecar.repl_api$eval9$loading__5569__auto____10.invoke(repl_api.clj:1) at figwheel_sidecar.repl_api$eval9.invokeStatic(repl_api.clj:1) at figwheel_sidecar.repl_api$eval9.invoke(repl_api.clj:1) at clojure.lang .Compiler.eval(Compiler.java:6927) at clojure.lang.Compiler.eval(Compiler.java:6916) at clojure.lang.Compiler.load(Compiler.java:7379) at 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) at clojure.core$load$fn__5677.invoke(core.clj:5893) at clojure.core$load.invokeStatic(core.clj:5892) at clojure.core$load.doInvoke (core.clj:5876) at clojure.lang.RestFn.invoke(RestFn.java:408) at clojure.core$load_one.invokeStatic(core.clj:5697) at clojure.core$load_one.invoke(core.clj:第 5692 章clojure.lang.RestFn.applyTo(RestFn.java:142) at clojure.core$apply.invokeStatic(core.clj:648) at clojure.core$load_libs.invokeStatic(core.clj:5774) at clojure.core$load_libs .doInvoke(core.clj:5758) at clojure.lang.RestFn.applyTo(RestFn.java:137) at clojure.core$apply.invokeStatic(core.clj:648) at clojure.core$require.invokeStatic(core. clj:5796) at clojure.core$require.doInvoke(core.clj:5796) at clojure.lang.RestFn.invoke(RestFn.java:408) at user$eval5.invokeStatic(form-init1038311299988387512.clj:1) at用戶$eval5.invoke (form-init1038311299988387512.clj:1) at clojure.lang.Compiler.eval(Compiler.java:6927) at clojure.lang.Compiler.eval(Compiler.java:6916) at clojure.lang.Compiler.load(Compiler. java:7379) at clojure.lang.Compiler.loadFile(Compiler.java:7317) at clojure.main$load_script.invokeStatic(main.clj:275) at clojure.main$init_opt.invokeStatic(main.clj:277) at clojure.main$init_opt.invoke(main.clj:277) at clojure.main$initialize.invokeStatic(main.clj:308) at clojure.main$null_opt.invokeStatic(main.clj:342) at clojure.main$null_opt .invoke(main.clj:339) at clojure.main$main.invokeStatic(main.clj:421) at clojure.main$main.doInvoke(main.clj:384) at clojure.lang.RestFn.invoke(RestFn. java:421) at clojure.lang.Var.invoke(Var.java:383) at clojure.lang.AFn.applyToHelper(AFn.java:156) at clojure.lang.Var.applyTo(Var.java:700) at clojure.main.main(main.java:37) 引起:java.lang.ClassNotFoundException: java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471) 處的 javax.xml.bind.DatatypeConverter在 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(Native Method) 在 java.base/java.lang.Class.forName(Class.java :398) at clojure.lang.RT.classForName(RT.java:2168) at clojure.lang.RT.classForNameNonLoading(RT.java:2181) at 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 問題,但除此之外沒有別的了。 知道如何解決這個問題嗎?

幾個月前我遇到了這個問題。 做一個lein deps :tree 您的依賴項之一是使用過時的庫。 您還應該使用lein-ancient 插件來確保您的所有直接依賴項都是最新的。

升級所有庫后,問題應該會消失。 如果它是包含過時 lib 的 3 級 dep,則將該 lib(具有最新版本)放在 lein :dependencies的頂部(當存在多個 deps 版本時,lein 遵循“第一個獲勝”的規則)。


此外,您應該考慮升級到 Figwheel-Main。 它比原來的無花果容易使用。 它還允許您使用 Clojure Deps 構建系統而不是lein ,這也將大大簡化您的 CLJS 開發。

在隨 Java 9 一起發布的 JDK 模塊化之后,標准包中不再提供其中的某些部分。 這是駐留在java.xml.bind模塊中的javax.xml.bind.DatatypeConverter的情況。

這可能只是對您使用的最新庫/工具的簡單升級,但如果您確實需要該依賴項,則應將其指定為java arg: --add-modules java.xml.bind (請參閱如何解析 java .lang.NoClassDefFoundError: javax/xml/bind/JAXBException in Java 9以獲得更多細節)。

我只根據https://stackoverflow.com/a/53039959/5022162this post將[javax.xml.bind/jaxb-api "2.3.0"]添加到我的: project.clj:dependencies項中,然后就可以了出色地。

我遇到了同樣的問題,運行了lein ancient (沒有進行更改),然后lein figwheel突然就起作用了?!? 不知道是什么造成了不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM