获取Java中的第三方库版本

获取Java中的第三方库版本,java,Java,在Python中,导入库之后,您可以很容易地获得它们的版本号。例如,对于json,您可以使用json轻松获取其版本。Java中有没有一种方法可以做同样的事情?有一个标准,但并不常用。您可能能够提取版本信息文件,但这对于库/供应商等来说是特定的。如果您只对几个特定的库感兴趣,那么您可以适应它们采用的任何符号。如果第三方库正确配置了其清单,您可以使用(首选)或(不太理想)。后者不太可取,因为您必须自己进行数字匹配 例如: Class<?> thirdPartyClass = org.ap

在Python中,导入库之后,您可以很容易地获得它们的版本号。例如,对于
json
,您可以使用
json轻松获取其版本。Java中有没有一种方法可以做同样的事情?

有一个标准,但并不常用。您可能能够提取版本信息文件,但这对于库/供应商等来说是特定的。如果您只对几个特定的库感兴趣,那么您可以适应它们采用的任何符号。

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

例如:

Class<?> thirdPartyClass = org.apache.log4j.Logger.class;
if (thirdPartyClass.getPackage().isCompatibleWith("2.0")) {
    // Do stuff specific to Log4j 2
}
Class thirdPartyClass=org.apache.log4j.Logger.Class;
如果(thirdPartyClass.getPackage().isCompatibleWith(“2.0”)){
//做一些特定于Log4j 2的事情
}

然而,很多第三方产品都懒得在jar清单中设置
规范版本
行,或者更糟的是,他们设置不正确。(JBoss在这方面历来是一个大罪犯,甚至用无效的规范版本替换其他第三方的规范版本。)清单的合同是规范版本必须只包含数字和非连续的句点,并且必须以数字开始和结束,因此可以进行简单的数值比较。

:(真是一个糟糕的惊喜。谢谢!如果你不介意我进一步提问的话……你如何在不进行硬记录的情况下获得项目使用的所有第三方JAR?计划在2016年左右在java 9中添加它。无法获得所有dhird方方方JAR。你需要使用gradle或maven,因为这肯定有一个标准。请参阅下面我的答案。)。