Running clj printed out a NullPointerException. The problem was caused by an invalid deps.edn. The error message could be much more helpful.
$ clj
Error building classpath. Cannot invoke "java.io.File.getAbsolutePath()" because the return value of "clojure.java.io$file.invoke
Static(Object)" is null
java.lang.NullPointerException: Cannot invoke "java.io.File.getAbsolutePath()" because the return value of "clojure.java.io$file.
invokeStatic(Object)" is null
at clojure.tools.deps.edn$io_err.invokeStatic(edn.clj:43)
at clojure.tools.deps.edn$read_edn.invokeStatic(edn.clj:68)
at clojure.tools.deps.edn$read_deps.invokeStatic(edn.clj:137)
at clojure.tools.deps.edn$read_deps.doInvoke(edn.clj:127)
at clojure.lang.RestFn.invoke(RestFn.java:413)
at clojure.tools.deps.edn$choose_deps.invokeStatic(edn.clj:187)
at clojure.tools.deps.edn$create_edn_maps.invokeStatic(edn.clj:192)
at clojure.tools.deps$create_edn_maps.invokeStatic(deps.clj:59)
at clojure.tools.deps$create_basis.invokeStatic(deps.clj:692)
at clojure.tools.deps.script.make_classpath2$run_core.invokeStatic(make_classpath2.clj:90)
at clojure.tools.deps.script.make_classpath2$run.invokeStatic(make_classpath2.clj:139)
at clojure.tools.deps.script.make_classpath2$_main.invokeStatic(make_classpath2.clj:183)
at clojure.tools.deps.script.make_classpath2$_main.doInvoke(make_classpath2.clj:154)
at clojure.lang.RestFn.applyTo(RestFn.java:140)
at clojure.lang.Var.applyTo(Var.java:707)
at clojure.core$apply.invokeStatic(core.clj:667)
at clojure.main$main_opt.invokeStatic(main.clj:515)
at clojure.main$main_opt.invoke(main.clj:511)
at clojure.main$main.invokeStatic(main.clj:665)
at clojure.main$main.doInvoke(main.clj:617)
at clojure.lang.RestFn.applyTo(RestFn.java:140)
at clojure.lang.Var.applyTo(Var.java:707)
at clojure.main.main(main.java:40)
Here is the deps.edn file (note the extra }):
{:paths ["src" "resources"]
:deps {org.clojure/clojure {:mvn/version "1.12.6"}}
:aliases
{:build {:deps {io.github.clojure/tools.build {:mvn/version "0.10.14"}}
:ns-default build}}}}