1

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

天真地,该脚本最初检查了在各种jarwarear文件中找到的所有类的sha256哈希,如果发现相同的类具有不同的哈希,则会抱怨。然而,这会产生太多的误报。

例如,类org.apache.commons.collections.FastHashMapcommons-beanutils-1.8.0.jarcommons-collections-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 -vsort)非常不令人满意。是否有更好的方法来测试目录层次结构中的所有类是否兼容以避免意外的运行时问题?

4

1 回答 1

1

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

您不应该在生产中运行一个您以前从未使用过的库,即使在开发中也是如此。

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

于 2013-01-10T10:19:04.060 回答