如何查看jar包的版本信息

=Start=

缘由:

需要知道一种通用的方法以获取jar包的版本信息,因此有了此文。

搜索关键字:
how to check spring version
JAR 文件 规范
获取jar包版本信息
参考解答:

JAR文件本质上是一个zip文件,包含一个可选的META-INF目录。多数情况下,JAR文件并不是类文件和/或资源文件的简单聚合档案。他们经常用作应用程序和扩展的构建基础。如果存在的话,META-INF目录用来存储包和扩展的配置数据,包括安全、版本、扩展和服务。

将jar包解压后读取文件:
./META-INF/MANIFEST.MF
即可找到对应的版本信息。

==

==

针对Maven管理的Jar包
在 pom.properties 中包含了jar包的版本号信息

==

针对ANT管理的Jar包
在 build.xml 里建立一个存放版本号的属性,并在打Jar包时,将版本号压入MANIFEST文件。程序在执行的时候,读取Jar包的MANIFEST来获取版本号。

====

=EOF=

声明: 除非注明,CrazyOf.me文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://crazyof.me/blog/archives/2573.html

《如何查看jar包的版本信息》上有3条评论

  1. 在部分情况下,通过pom.xml无法找到「间接」依赖的jar包信息;
    但是我们可以通过Maven把运行时依赖到的内容也统计出来,更准确地讲,是把pom.xml中scope为compile和runtime级别的依赖都进行统计,这里可以使用 mvn dependency:tree -Dverbose 查看所有的依赖,简单的 mvn dependency:tree 可能显示不全。

  2. 【漏洞预警】Fastjson 远程代码执行漏洞(暂无PoC)
    http://bobao.360.cn/learning/detail/3617.html
    https://bbs.aliyun.com/read/309931.html
    https://github.com/alibaba/fastjson/wiki/security_update_20170315

    检测当前使用版本的是否有问题

    方法一:通过maven dependency检测 如果是maven工程,在代码根目录下执行如下命令,如果有返回,就是需要升级
    mvn dependency:tree | grep "com.alibaba.fastjson:" | grep -v sec01 | grep -v 1.2.25 | grep -v 1.2.26 | grep -v 1.2.27

    方法二:在lib目录下执行如下脚本命令,可以判断版本是否有问题
    ls | grep fastjson | grep jar | grep -v sec01 | grep -v 1.2.25 | grep -v 1.2.26 | grep -v 1.2.27 | grep -v 1.2.28 | grep -v 1.2.29

    方法三:看打开的文件中是否包含fastjson
    sudo -u tomcat lsof -X | grep -v 1.2.25 | grep -v 1.2.26 | grep -v 1.2.27 | grep -v 1.2.28 | grep -v 1.2.29

    通过lsof检测,在tomcat某些场景是检测不出来的,最好在lib目录下用ls检测(第2种方法)。

发表评论

电子邮件地址不会被公开。 必填项已用*标注