在这种情况下,Leiningen 以进程的方式调用 clojure.main,并打印出(未捕获的)错误的子进程 JVM。
您在这里看到两个异常 - 抛出的异常,然后是深层原因异常。当嵌套原因堆栈与更高层次异常已打印的堆栈相同时,Java 的异常打印器会打印“... 12 more”。也就是说,这里的12 more正是已为第一个异常打印的堆栈跟踪行。所以,实际上这里没有更多信息了 - 您已经有了所有信息。
关键行是底部最底层(根)异常的第一行。
at xinova.model$reload_dbs.invokeStatic(model.clj:78)
我不知道错误是什么,但我会猜这可能是对 nil 引用进行的 Java 交互调用。这是在加载文件时发生的。
在 Clojure 1.10.1 中,我们修改了通过 clojure.main 经过的未捕获异常的报告方式。如果您切换到那个版本,您实际上只会看到异常消息和一个较长报告,该报告会输出到临时文件。
顺便说一下,您在这里看到的最上面一行信息是 "在主线程中发生异常 错误编译",由于 Clojure 1.10 中异常处理重构中的一个细微错误,这是误导性的。我 earlier this week 准备了一个问题跟踪和补丁,用于在 Clojure 1.11 中修复它(请参阅 CLJ-2529)。基本上,在加载过程中发生的错误被错误地报告为编译器异常。这并不会改变太多,但这只是一个例子。