我可以在运行时确定 Java 库的版本吗?

2023-12-23

是否可以在运行时确定第三方 Java 库的版本?


第三方Java库是指Jar文件,Jar文件清单具有专门用于指定库版本的属性。

注意:并非所有 Jar 文件实际上都指定了版本,即使它们should.

Java内置的读取该信息的方式是使用反射,但你需要知道some库中要查询的类。哪个类/接口并不重要。

Example

public class Test {
    public static void main(String[] args) {
        printVersion(org.apache.http.client.HttpClient.class);
        printVersion(com.fasterxml.jackson.databind.ObjectMapper.class);
        printVersion(com.google.gson.Gson.class);
    }
    public static void printVersion(Class<?> clazz) {
        Package p = clazz.getPackage();
        System.out.printf("%s%n  Title: %s%n  Version: %s%n  Vendor: %s%n",
                          clazz.getName(),
                          p.getImplementationTitle(),
                          p.getImplementationVersion(),
                          p.getImplementationVendor());
    }
}

Output

org.apache.http.client.HttpClient
  Title: HttpComponents Apache HttpClient
  Version: 4.3.6
  Vendor: The Apache Software Foundation
com.fasterxml.jackson.databind.ObjectMapper
  Title: jackson-databind
  Version: 2.7.0
  Vendor: FasterXML
com.google.gson.Gson
  Title: null
  Version: null
  Vendor: null
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以在运行时确定 Java 库的版本吗? 的相关文章

随机推荐

  • 从Python中终端的关闭事件获取信号

    如何制作一个仅通过终端 无 GUI 运行的 python 脚本 以便在按下顶部的红色 X 时不退出 而是为该信号分配一个函数 该函数最终会关闭窗口和进程 类似于退出时的警报对话框 但基于终端 一般来说 您可以使用atexit http do
  • SQL 将所有列插入到具有第二列常量的表中

    我有一个新表 由两列组成 我想要做的是将另一个表中的一列中的所有值插入到新表中 但让第二列保持不变 例如 Table1 ID 1 2 3 4 5 6 New Table COL1 COL2 1 1 2 1 3 1 4 1 5 1 6 1 7
  • 优化查找字符串中第 N 次出现的字符

    我编写了一个 sql server 函数 它返回第 N 次出现的字符之前的子字符串 例如 SELECT dbo fn getFirstNthSentence hello world It is raining today 3 返回 hell
  • Prism RequestNavigate 不起作用

    在每个视图中 public partial class View2 UserControl IRegionMemberLifetime INavigationAware public bool KeepAlive get return fa
  • 如何使用@Conditional注解指定多个条件

    我第一次做 Spring 项目 遇到了一个问题 我有一个java类 Component Conditional AppA class public class AppDeploy 现在我需要修改它 如下所示 Component Condit
  • 如何使用本地服务器运行示例 Threejs VR 项目?

    我正在尝试使用 Samsung NOTE 4 设备中的 xampp 本地服务器运行 VR 示例 Threejs 项目 在此手机中 在线 Threejs VR 示例 https trijs org examples q vr webvr cu
  • 当上一个 api 成功完成后,如何对 api 进行新的调用?

    我是 Angular 和 rxjs 的新手 我有以下场景 在该场景中 我需要在成功解析对 api 的调用后进行新的调用 在 Angular rxjs 的上下文中我不知道该怎么做它 handler void this serviceNAme
  • 寻找 DNA Java 的超序列

    我正在努力研究 查找超序列 算法 输入用于一组字符串 String A caagccacctacatca String B cgagccatccgtaaagttg String C agaacctgctaaatgctaga 结果将是正确对齐
  • php 日期格式正则表达式检查

    我正在尝试验证日期字段 YYYYMMDD 使用 PHP 正则表达式 我尝试了这样的方法 0 9 4 0 9 2 0 9 2 但在这个中 它将接受任何两位数字 例如 MM 或 DD 的 01 99 但我希望有 MM 的 01 12 和 DD
  • Adobe AIR 应用程序的 Jenkins CI 服务器设置(使用 FlexUnit4 和 GitHub 作为存储库)

    我有一个用 Robotlegs 1 5 2 编写的 Adob e AIR 应用程序 使用的单元测试框架是FlexUnit4 我已经为使用 CakePHP 2 x 和 PHPUnit 单元测试框架编写的项目设置了 Jenkins CI 我的
  • Libusb 以及如何在 Ubuntu 中使用它的软件包

    我已经使用以下命令安装了 libusb 我不确定这是否正确 命令是 sudo apt get install libusb dev 一旦我安装了 我不确定它是否已经安装 因为我是 Ubuntu 的新手用户 我想知道如何使用该库 因为我编写了
  • 如何处理 CMake 中的递归依赖关系

    假设我有包 A B 和 C 包 B 使用包 A 包 C 使用包 B 我创建共享库 所以在包 B 中我做了类似的事情 find package A if A FOUND target link libraries B A LIBRARIES
  • 在c#中将对象的克隆添加到列表中(防止外部修改)

    我有一个像 obj1 我想将其添加到列表中 我可以通过添加它list1 add obj1 现在一旦我更新obj1 我的列表中的对象也在更新 我知道我在这里处理参考文献 我的要求需要修改obj1并再次将其添加到列表中 我没有两个不同的对象 而
  • Pandas concat 产生 ValueError:计划形状未对齐

    在 pandas 中 我尝试连接一组数据帧 但收到此错误 ValueError Plan shapes are not aligned 我的理解 concat 是它会连接相同的列 但对于那些找不到的列 它将用 NA 填充 这里的情况似乎并非
  • 没有 WHERE 的 PostgreSQL 查询仅 ORDER BY 和 LIMIT 不使用索引

    我有一个表 其中包含 BIGSERIAL 类型的 id 列 我也有这一列的索引 降序排序 BTREE 唯一 我经常需要从包含数百万条目的表中检索最后 10 20 30 个条目 如下所示 SELECT FROM table ORDER BY
  • Task.Delay在等待时会浪费系统资源吗?

    我正在尝试定期运行一段代码 中间有时间间隔 可能有多个这样的代码片段同时运行 所以我转向Task Run利用异步方法调用和并行性 现在我想知道我应该如何实现时间间隔 直接的方法是使用Task Delay像这样 var t Task Run
  • 如何用 joda 时间解析“YYYY-MM-DD”

    我正在尝试使用 joda time 来解析以下形式的日期字符串YYYY MM DD 我有这样的测试代码 DateTimeFormatter dateDecoder DateTimeFormat forPattern YYYY MM DD D
  • 获取重复数组值的数组

    我有一个数组 正在其中测试重复值 我想获取仅包含重复值的数组 以便向用户提供错误消息 并指出哪些是有问题的值 我试过 duplicates array diff array with dupes array unique array wit
  • MD5 整个节点以及校验和

    我有一个业务需求 将 Request 标签和子节点放入CDATA或xml字符串中 放入 arg0 元素 Concat
  • 我可以在运行时确定 Java 库的版本吗?

    是否可以在运行时确定第三方 Java 库的版本 第三方Java库是指Jar文件 Jar文件清单具有专门用于指定库版本的属性 注意 并非所有 Jar 文件实际上都指定了版本 即使它们should Java内置的读取该信息的方式是使用反射 但你