用Java获取第三方库版本

时间:2014-11-27 16:32:43

标签: java

在Python中,导入库后,您可以轻松获取其版本号。例如,对于json,您可以使用json.__version__轻松获取其版本。 Java中有没有办法可以做同样的事情?

2 个答案:

答案 0 :(得分:5)

有一个标准,但它并不常用。你可能能够提取版本信息out of the jar's MANIFEST.MF文件,但这对于图书馆/供应商来说是特别的。希望如果你只对一些特定的图书馆感兴趣,那么你可以容纳任何他们的符号通过。

答案 1 :(得分:2)

如果第三方库已正确配置其清单,您可以使用Package.isCompatibleWith(String)(首选)或Package.getSpecificationVersion()(不太理想)。后者不太理想,因为你必须自己进行数字匹配。

例如:

Class<?> thirdPartyClass = org.apache.log4j.Logger.class;
if (thirdPartyClass.getPackage().isCompatibleWith("2.0")) {
    // Do stuff specific to Log4j 2
}

然而,很多第三方产品都不打扰在jar的清单中设置Specification-Version行,或者更糟糕的是,他们设置错误。 (JBoss在历史上一直是这方面的大罪犯,甚至用其他第三方的规范版本替换为无效版本。)清单的合同是规范版本必须只包含数字和非连续句点,并且必须以数字开头和结尾,因此可以进行直接的数字比较。