【发布时间】:2015-02-11 14:37:42
【问题描述】:
有一段复杂的代码可以执行许多复杂的数学运算。
当它在 jdk 1.7 上由 maven 构建和测试时,它通过了所有测试。 使用 jdk 1.8 时失败。
试图在调试器中找到计算出错的地方似乎几乎没有希望。
我有哪些选择?是否有工具可以扫描我的代码中 jdk 1.7 和 1.8 之间的不兼容性?
最好的选择是在两个单独的调试器中运行代码并查看差异在哪里?
编辑:
@Philipp Claßen 这是迄今为止最可能的原因。我希望有一种自动检查的方法。
@dkatzel 代码不是我写的,评论很差,而且做的科学计算对我来说是“木头”。
@迈克·塞缪尔 我认为这种方法与并行运行两个调试器相比没有任何好处。
感谢大家的帮助。似乎两个调试器是最好的方法。
编辑 2 原始代码的作者依赖于哈希映射排序。这就是问题所在。
【问题讨论】:
-
查看发行说明以获取线索。否则,我认为您将不得不运行两个调试器。
-
你能发一些代码吗?
-
我可以保证看到代码不会有帮助。除非你想经历数千行。
-
您描述了两个应该是五个的场景:1) 使用
1.7构建并在1.7上测试/执行,2) 使用1.7构建并在1.8上测试/执行, 3) 使用1.8和-target 1.7构建并在1.7上测试/执行,4) 使用1.8和-target 1.7构建并在1.8上测试/执行,5) 使用1.8和@987654332 构建@ 并在1.8上测试/执行。了解这些场景中的哪些失败或失败的场景是否/哪些会产生相同的结果会很有用。 -
如果您怀疑可能存在依赖于
HashMap排序的代码,您可以在jdk1.7上运行测试,在其中替换了执行不同顺序的HashMap实现。如果这是与原始jdk1.7的唯一区别,您很快就会知道是否是问题所在。
标签: java java-8 java-7 incompatibility