Java类:如何检查兼容性以避免在运行时出现类加载/兼容性问题

时间:2013-01-10 10:14:47

标签: java

我有一个基于Ant的构建系统,我想我可能会编写一个python脚本来测试目录层次结构中的所有编译/ jarred类,以避免在编译时与运行时使用的不同版本中可能出现的问题。

天真的脚本最初检查了各种 jar war ear 中找到的所有类的 sha256 哈希值如果找到具有不同散列的相同类,则会出现文件和抱怨。然而,这会产生太多误报。

例如, commons-beanutils-1.8.0.jar commons-collections中提供了 org.apache.commons.collections.FastHashMap 类-2.1.1.jar 具有不同的哈希值。显然这个标准太严格了。但最后,我能够产生相同哈希的唯一方法是执行以下操作:

javap commons-beanutils-1.8.0.jar.exploded/org/apache/commons/collections/FastHashMap.class | sort | grep -v Compiled\ from\ |  sha256sum -
javap commons-collections-2.1.1.jar.exploded/org/apache/commons/collections/FastHashMap.class | sort | grep -v Compiled\ from\ |  sha256sum -

这些确实是相同的,但是,(尤其是 grep -v sort )非常不令人满意。有没有更好的方法来测试目录层次结构中的所有类是否兼容,以避免意外的运行时问题?

1 个答案:

答案 0 :(得分:1)

我建议您在将应用程序部署到生产环境之前对其进行测试。如果有任何你认为不需要的库,你应该删除它们,或者你应该测试它们。

您不应该在生产中运行您以前从未使用过的库。即使在开发中。

这将最大限度地减少生产中可能发生的各种问题。