clojure 多个 StackOverflowError
clojure multiple StackOverflowError
我有一个 clojure 脚本,我 运行 已经用了好几年了。
最近我不得不重新安装 leiningen 和 java 8.
当我 运行 代码时,我现在在第三方库上遇到多个 WhosebugErrors。
例如
WhosebugError org.apache.commons.math3.util.FastMath.cosQ (FastMath.java:1850)
和
WhosebugError clojure.lang.Numbers$DoubleOps.combine (Numbers.java:571)
我会 post 编写代码,但它现在在我的代码和第三方库中的多个位置发生了??
没有堆栈跟踪和一些代码,将很难找到特定的答案,所以这里是这些事情的通用方法:
第 1 部分 "what was running before":
通过挖掘日志、恢复备份等方式重新创建您的旧环境,然后 运行:
lein deps :tree 2>&1 > old-lein-dependencies
2>&1
部分确保版本范围和冲突警告
包含在输出中。
记下leiningen版本和java版本:
lein version
第 2 部分:"what is running now"
重复上述步骤,记录与之前相同的信息:
lein deps :tree 2>&1 > new-lein-dependencies
lein version
java -version
第 3 部分:差异与比较
找出所有差异
diff -u old-lein-dependencies new-lein-dependencies
lein 打印所有重要警告的顶部会有很大差异。最后的线索几乎总是在这里,尽管通常不容易立即识别出来。
第 4 部分:做科学
检查每个版本更改,从初始配置开始,将版本固定在 project.clj 中,直到找到破坏内容的更改。固定这些的一种方便方法是使用 project.clj 文件中的 :managed-dependencies
块。它看起来像这样:
:managed-dependencies [[http-kit "2.3.0-alpha4"]]
并重复切换版本的过程,直到您了解引入更改的位置。对我来说,这几乎总是在依赖项中使用版本范围而不是特定版本的结果。我不再对版本范围太热心了:-/
所以我无法比较之前的设置,因为它是在一台被擦干净的机器上。
我发现该工具执行的一个数学公式中出现错误,该工具基本上反复调用自身,导致堆栈溢出错误。
我有一个 clojure 脚本,我 运行 已经用了好几年了。
最近我不得不重新安装 leiningen 和 java 8.
当我 运行 代码时,我现在在第三方库上遇到多个 WhosebugErrors。
例如 WhosebugError org.apache.commons.math3.util.FastMath.cosQ (FastMath.java:1850)
和
WhosebugError clojure.lang.Numbers$DoubleOps.combine (Numbers.java:571)
我会 post 编写代码,但它现在在我的代码和第三方库中的多个位置发生了??
没有堆栈跟踪和一些代码,将很难找到特定的答案,所以这里是这些事情的通用方法:
第 1 部分 "what was running before":
通过挖掘日志、恢复备份等方式重新创建您的旧环境,然后 运行:
lein deps :tree 2>&1 > old-lein-dependencies
2>&1
部分确保版本范围和冲突警告
包含在输出中。
记下leiningen版本和java版本:
lein version
第 2 部分:"what is running now"
重复上述步骤,记录与之前相同的信息:
lein deps :tree 2>&1 > new-lein-dependencies
lein version
java -version
第 3 部分:差异与比较
找出所有差异
diff -u old-lein-dependencies new-lein-dependencies
lein 打印所有重要警告的顶部会有很大差异。最后的线索几乎总是在这里,尽管通常不容易立即识别出来。
第 4 部分:做科学
检查每个版本更改,从初始配置开始,将版本固定在 project.clj 中,直到找到破坏内容的更改。固定这些的一种方便方法是使用 project.clj 文件中的 :managed-dependencies
块。它看起来像这样:
:managed-dependencies [[http-kit "2.3.0-alpha4"]]
并重复切换版本的过程,直到您了解引入更改的位置。对我来说,这几乎总是在依赖项中使用版本范围而不是特定版本的结果。我不再对版本范围太热心了:-/
所以我无法比较之前的设置,因为它是在一台被擦干净的机器上。
我发现该工具执行的一个数学公式中出现错误,该工具基本上反复调用自身,导致堆栈溢出错误。