我有一个基于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 )非常不令人满意。有没有更好的方法来测试目录层次结构中的所有类是否兼容,以避免意外的运行时问题?
答案 0 :(得分:1)
我建议您在将应用程序部署到生产环境之前对其进行测试。如果有任何你认为不需要的库,你应该删除它们,或者你应该测试它们。
您不应该在生产中运行您以前从未使用过的库。即使在开发中。
这将最大限度地减少生产中可能发生的各种问题。