lein build fails on JDK9
johnjelinek opened this issue · comments
$ lein build
up to date in 0.76s
Figwheel: Cutting some fruit, just a sec ...
Exception in thread "main" java.lang.ExceptionInInitializerError
at clojure.main.<clinit>(main.java:20)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter, compiling:(cljs/util.cljc:1:1)
at clojure.lang.Compiler.load(Compiler.java:7526)
at clojure.lang.RT.loadResourceScript(RT.java:379)
at clojure.lang.RT.loadResourceScript(RT.java:370)
at clojure.lang.RT.load(RT.java:460)
at clojure.lang.RT.load(RT.java:426)
at clojure.core$load$fn__6548.invoke(core.clj:6046)
at clojure.core$load.invokeStatic(core.clj:6045)
at clojure.core$load.doInvoke(core.clj:6029)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5848)
at clojure.core$load_one.invoke(core.clj:5843)
at clojure.core$load_lib$fn__6493.invoke(core.clj:5888)
at clojure.core$load_lib.invokeStatic(core.clj:5887)
at clojure.core$load_lib.doInvoke(core.clj:5868)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:659)
at clojure.core$load_libs.invokeStatic(core.clj:5925)
at clojure.core$load_libs.doInvoke(core.clj:5909)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:659)
at clojure.core$require.invokeStatic(core.clj:5947)
at clojure.core$require.doInvoke(core.clj:5947)
at clojure.lang.RestFn.invoke(RestFn.java:805)
at cljs.analyzer$eval235$loading__6434__auto____236.invoke(analyzer.cljc:9)
at cljs.analyzer$eval235.invokeStatic(analyzer.cljc:9)
at cljs.analyzer$eval235.invoke(analyzer.cljc:9)
at clojure.lang.Compiler.eval(Compiler.java:7062)
at clojure.lang.Compiler.eval(Compiler.java:7051)
at clojure.lang.Compiler.load(Compiler.java:7514)
at clojure.lang.RT.loadResourceScript(RT.java:379)
at clojure.lang.RT.loadResourceScript(RT.java:370)
at clojure.lang.RT.load(RT.java:460)
at clojure.lang.RT.load(RT.java:426)
at clojure.core$load$fn__6548.invoke(core.clj:6046)
at clojure.core$load.invokeStatic(core.clj:6045)
at clojure.core$load.doInvoke(core.clj:6029)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5848)
at clojure.core$load_one.invoke(core.clj:5843)
at clojure.core$load_lib$fn__6493.invoke(core.clj:5888)
at clojure.core$load_lib.invokeStatic(core.clj:5887)
at clojure.core$load_lib.doInvoke(core.clj:5868)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:659)
at clojure.core$load_libs.invokeStatic(core.clj:5925)
at clojure.core$load_libs.doInvoke(core.clj:5909)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:659)
at clojure.core$require.invokeStatic(core.clj:5947)
at clojure.core$require.doInvoke(core.clj:5947)
at clojure.lang.RestFn.invoke(RestFn.java:457)
at figwheel_sidecar.utils$eval229$loading__6434__auto____230.invoke(utils.clj:1)
at figwheel_sidecar.utils$eval229.invokeStatic(utils.clj:1)
at figwheel_sidecar.utils$eval229.invoke(utils.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:7062)
at clojure.lang.Compiler.eval(Compiler.java:7051)
at clojure.lang.Compiler.load(Compiler.java:7514)
at clojure.lang.RT.loadResourceScript(RT.java:379)
at clojure.lang.RT.loadResourceScript(RT.java:370)
at clojure.lang.RT.load(RT.java:460)
at clojure.lang.RT.load(RT.java:426)
at clojure.core$load$fn__6548.invoke(core.clj:6046)
at clojure.core$load.invokeStatic(core.clj:6045)
at clojure.core$load.doInvoke(core.clj:6029)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5848)
at clojure.core$load_one.invoke(core.clj:5843)
at clojure.core$load_lib$fn__6493.invoke(core.clj:5888)
at clojure.core$load_lib.invokeStatic(core.clj:5887)
at clojure.core$load_lib.doInvoke(core.clj:5868)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:659)
at clojure.core$load_libs.invokeStatic(core.clj:5925)
at clojure.core$load_libs.doInvoke(core.clj:5909)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:659)
at clojure.core$require.invokeStatic(core.clj:5947)
at clojure.core$require.doInvoke(core.clj:5947)
at clojure.lang.RestFn.invoke(RestFn.java:1523)
at figwheel_sidecar.config$eval31$loading__6434__auto____32.invoke(config.clj:1)
at figwheel_sidecar.config$eval31.invokeStatic(config.clj:1)
at figwheel_sidecar.config$eval31.invoke(config.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:7062)
at clojure.lang.Compiler.eval(Compiler.java:7051)
at clojure.lang.Compiler.load(Compiler.java:7514)
at clojure.lang.RT.loadResourceScript(RT.java:379)
at clojure.lang.RT.loadResourceScript(RT.java:370)
at clojure.lang.RT.load(RT.java:460)
at clojure.lang.RT.load(RT.java:426)
at clojure.core$load$fn__6548.invoke(core.clj:6046)
at clojure.core$load.invokeStatic(core.clj:6045)
at clojure.core$load.doInvoke(core.clj:6029)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5848)
at clojure.core$load_one.invoke(core.clj:5843)
at clojure.core$load_lib$fn__6493.invoke(core.clj:5888)
at clojure.core$load_lib.invokeStatic(core.clj:5887)
at clojure.core$load_lib.doInvoke(core.clj:5868)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:659)
at clojure.core$load_libs.invokeStatic(core.clj:5925)
at clojure.core$load_libs.doInvoke(core.clj:5909)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:659)
at clojure.core$require.invokeStatic(core.clj:5947)
at clojure.core$require.doInvoke(core.clj:5947)
at clojure.lang.RestFn.invoke(RestFn.java:436)
at figwheel_sidecar.build_utils$eval25$loading__6434__auto____26.invoke(build_utils.clj:1)
at figwheel_sidecar.build_utils$eval25.invokeStatic(build_utils.clj:1)
at figwheel_sidecar.build_utils$eval25.invoke(build_utils.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:7062)
at clojure.lang.Compiler.eval(Compiler.java:7051)
at clojure.lang.Compiler.load(Compiler.java:7514)
at clojure.lang.RT.loadResourceScript(RT.java:379)
at clojure.lang.RT.loadResourceScript(RT.java:370)
at clojure.lang.RT.load(RT.java:460)
at clojure.lang.RT.load(RT.java:426)
at clojure.core$load$fn__6548.invoke(core.clj:6046)
at clojure.core$load.invokeStatic(core.clj:6045)
at clojure.core$load.doInvoke(core.clj:6029)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5848)
at clojure.core$load_one.invoke(core.clj:5843)
at clojure.core$load_lib$fn__6493.invoke(core.clj:5888)
at clojure.core$load_lib.invokeStatic(core.clj:5887)
at clojure.core$load_lib.doInvoke(core.clj:5868)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:659)
at clojure.core$load_libs.invokeStatic(core.clj:5925)
at clojure.core$load_libs.doInvoke(core.clj:5909)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:659)
at clojure.core$require.invokeStatic(core.clj:5947)
at clojure.core$require.doInvoke(core.clj:5947)
at clojure.lang.RestFn.invoke(RestFn.java:930)
at figwheel_sidecar.repl_api$eval19$loading__6434__auto____20.invoke(repl_api.clj:1)
at figwheel_sidecar.repl_api$eval19.invokeStatic(repl_api.clj:1)
at figwheel_sidecar.repl_api$eval19.invoke(repl_api.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:7062)
at clojure.lang.Compiler.eval(Compiler.java:7051)
at clojure.lang.Compiler.load(Compiler.java:7514)
at clojure.lang.RT.loadResourceScript(RT.java:379)
at clojure.lang.RT.loadResourceScript(RT.java:370)
at clojure.lang.RT.load(RT.java:460)
at clojure.lang.RT.load(RT.java:426)
at clojure.core$load$fn__6548.invoke(core.clj:6046)
at clojure.core$load.invokeStatic(core.clj:6045)
at clojure.core$load.doInvoke(core.clj:6029)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invokeStatic(core.clj:5848)
at clojure.core$load_one.invoke(core.clj:5843)
at clojure.core$load_lib$fn__6493.invoke(core.clj:5888)
at clojure.core$load_lib.invokeStatic(core.clj:5887)
at clojure.core$load_lib.doInvoke(core.clj:5868)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:659)
at clojure.core$load_libs.invokeStatic(core.clj:5925)
at clojure.core$load_libs.doInvoke(core.clj:5909)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invokeStatic(core.clj:659)
at clojure.core$require.invokeStatic(core.clj:5947)
at clojure.core$require.doInvoke(core.clj:5947)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at user$eval13$loading__6434__auto____14.invoke(user.clj:1)
at user$eval13.invokeStatic(user.clj:1)
at user$eval13.invoke(user.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:7062)
at clojure.lang.Compiler.eval(Compiler.java:7051)
at clojure.lang.Compiler.load(Compiler.java:7514)
at clojure.lang.RT.loadResourceScript(RT.java:379)
at clojure.lang.RT.loadResourceScript(RT.java:366)
at clojure.lang.RT.maybeLoadResourceScript(RT.java:362)
at clojure.lang.RT.doInit(RT.java:482)
at clojure.lang.RT.<clinit>(RT.java:336)
... 1 more
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:466)
at clojure.lang.DynamicClassLoader.findClass(DynamicClassLoader.java:69)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:563)
at clojure.lang.DynamicClassLoader.loadClass(DynamicClassLoader.java:77)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:375)
at clojure.lang.RT.classForName(RT.java:2204)
at clojure.lang.RT.classForNameNonLoading(RT.java:2217)
at cljs.util$eval241$loading__6434__auto____242.invoke(util.cljc:9)
at cljs.util$eval241.invokeStatic(util.cljc:9)
at cljs.util$eval241.invoke(util.cljc:9)
at clojure.lang.Compiler.eval(Compiler.java:7062)
at clojure.lang.Compiler.eval(Compiler.java:7051)
at clojure.lang.Compiler.load(Compiler.java:7514)
... 174 more
Subprocess failed
A workaround is to add [javax.xml.bind/jaxb-api "2.3.0"]
as a dependency.
That works -- should I close this or is there an action item to update the scaffolding?
Might be worth keeping opened for now. I'll check if updating the ClojureScript version might address it.
Did updating the cljs version fix it in c937308?
just doing a bit of testing here, but looks promising
unfortunately, looks like it's still a problem with the dependencies updated
I think adding the dependency explicitly in the template might be the way to go for now
ok I got a new version pushed out, thanks for reporting :)
I scaffolded a new guestbook and it still failed -- do I need to do anything special to have the latest version of the scaffolding pick up?
Hmm, I don't think you should. A project generated with a new version should have the following dependency in project.clj
:
;; needed for JDK 9 compatibility
[javax.xml.bind/jaxb-api "2.3.0"]
looks like I'm on 0.2.2
of core
Just to clarify, the changes would only be available when you create a new project. You'd have to manually update dependencies in the existing ones.
right, I'm referring to a new project ... here, I'll make another one, here's the resulting project.clj
:
(defproject stuffbook "0.1.0-SNAPSHOT"
:description "FIXME: write this!"
:url "http://example.com/FIXME"
:dependencies [[bidi "2.1.2"]
[com.cemerick/piggieback "0.2.2"]
[com.taoensso/timbre "4.10.0"]
[macchiato/hiccups "0.4.1"]
[macchiato/core "0.2.2"]
[macchiato/env "0.0.6"]
[mount "0.1.11"]
[org.clojure/clojure "1.9.0"]
[org.clojure/clojurescript "1.9.946"]]
:min-lein-version "2.0.0"
:jvm-opts ^:replace ["-Xmx1g" "-server"]
:plugins [[lein-doo "0.1.7"]
[macchiato/lein-npm "0.6.3"]
[lein-figwheel "0.5.14"]
[lein-cljsbuild "1.1.5"]]
:npm {:dependencies [[source-map-support "0.4.6"]]
:write-package-json true}
:source-paths ["src" "target/classes"]
:clean-targets ["target"]
:target-path "target"
:profiles
{:dev
{:npm {:package {:main "target/out/stuffbook.js"
:scripts {:start "node target/out/stuffbook.js"}}}
:dependencies [[figwheel-sidecar "0.5.14"]]
:cljsbuild
{:builds {:dev
{:source-paths ["env/dev" "src"]
:figwheel true
:compiler {:main stuffbook.app
:output-to "target/out/stuffbook.js"
:output-dir "target/out"
:target :nodejs
:optimizations :none
:pretty-print true
:source-map true
:source-map-timestamp false}}}}
:figwheel
{:http-server-root "public"
:nrepl-port 7000
:reload-clj-files {:clj false :cljc true}
:nrepl-middleware [cemerick.piggieback/wrap-cljs-repl]}
:source-paths ["env/dev"]
:repl-options {:init-ns user}}
:test
{:cljsbuild
{:builds
{:test
{:source-paths ["env/test" "src" "test"]
:compiler {:main stuffbook.app
:output-to "target/test/stuffbook.js"
:target :nodejs
:optimizations :none
:pretty-print true
:source-map true}}}}
:doo {:build "test"}}
:release
{:npm {:package {:main "target/release/stuffbook.js"
:scripts {:start "node target/release/stuffbook.js"}}}
:cljsbuild
{:builds
{:release
{:source-paths ["env/prod" "src"]
:compiler {:main stuffbook.app
:output-to "target/release/stuffbook.js"
:language-in :ecmascript5
:target :nodejs
:optimizations :simple
:pretty-print false}}}}}}
:aliases
{"build" ["do"
["clean"]
["npm" "install"]
["figwheel" "dev"]]
"package" ["do"
["clean"]
["npm" "install"]
["with-profile" "release" "npm" "init" "-y"]
["with-profile" "release" "cljsbuild" "once"]]
"test" ["do"
["npm" "install"]
["with-profile" "test" "doo" "node"]]})
Hmm, that looks like it's generated by an older version of the template. Can you try deleting the cached version in ~/.m2/repository/macchiato
, and see if that helps.
deleting the cached version fixed it