Clojure: Lein figwheel и ClassNotFoundException: javax.xml.bind.DatatypeConverter - PullRequest
0 голосов
/ 26 июня 2019

Я пытаюсь запустить lein figwheel в приложении ClojureScript и получаю эту ошибку:

Исключение в потоке "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 $ применяются.invokeStatic (сore.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 $ eval.вызывать (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.rep9 $.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 $ применяются.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.$ 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_lan.cl): clojiler.cli.cli.cli.cli.cli.cli..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.вызвать (core.clj: 5737) на clojure.core $ load_lib.invokeStatic (core.clj: 5736) на clojure.core $ load_lib.doInvoke (core.clj: 5717) на clojure.lang.RestFn.applyTo (RestFn.jav)a: 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) у пользователя $ eval5.invokeStatic (form-init1038311299988387512.clj: 1) у пользователя $ 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 голосов
/ 27 июня 2019

После модульности JDK, выпущенной с Java 9, некоторые ее части больше не доступны в стандартном комплекте. Это случай javax.xml.bind.DatatypeConverter, который находится в модуле java.xml.bind.

Возможно, это просто простое обновление до последних используемых вами библиотек / инструментов, но в случае, если вам действительно нужна эта зависимость, вы должны указать ее как java arg: --add-modules java.xml.bind (см. Как решить java.lang.NoClassDefFoundError: javax / xml / bind / JAXBException в Java 9 для получения дополнительных сведений).

0 голосов
/ 26 июня 2019

У меня была эта проблема несколько месяцев назад. Сделай lein deps :tree. Одна из ваших зависимостей - использование устаревшей библиотеки. Вам также следует использовать плагин lein-Ancient , чтобы обеспечить актуальность всех ваших прямых зависимостей.

Как только вы обновите все свои библиотеки, проблема должна исчезнуть. Если это депозита 3-го уровня, включая устаревшую библиотеку, поместите эту библиотеку (с самой новой версией) в верхнюю часть вашего лейна :dependencies (лейн следует правилу «первый выигрывает», когда присутствует несколько версий deps).


Кроме того , вам следует рассмотреть возможность обновления до Figwheel-Main. Это намного проще в использовании, чем оригинальное колесное колесо. Это также позволяет вам использовать систему сборки Clojure Deps вместо lein, что также значительно упростит вашу разработку CLJS.

...