标题说明了一切。众所周知,至少4或5个log4j罐子最终都在类路径中。我怎么知道我正在使用哪个版本?
答案 0 :(得分:4)
它取决于ClassLoader,但看看example,你可以在getImplementationVersion
类的log4j上调用方法Layout
:
org.apache.log4j.Layout.class.getPackage().getImplementationVersion()
答案 1 :(得分:1)
一种简单的方法:
答案 2 :(得分:0)
删除您不需要的所有版本的jar(一个应该足够)并找出剩下的那个版本的文件名。 例如:
$commit
答案 3 :(得分:0)
我不希望这是首选方法,但这是我确定软件使用的Log4j版本的方法:
使用.zip归档实用程序打开或提取Log4j .jar的内容(Windows资源管理器支持此功能)。导航到“ META-INF ”子目录,然后在文本编辑器中打开文件“ MANIFEST.MF ”。找到以“ Implementation-Version ”开头的行,这是Log4j版本。
显然,这不是编程解决方案。但是,如果您只是想知道您使用的是哪个版本,并且拥有.jar存档,那么它将起作用。
编辑:我注意到Loic M.'s answer中提到的Package.getSpecificationVersion()
和Package.getImplementationVersion()
适用于其他.jar库,但不适用于我的Log4j。我使用的版本可能不支持。
编辑:我下载了2.13.1版,以尝试上述方法并发现它们可以使用。因此,是我的版本(1.2.16)不支持它们,并返回了null
。