获取 JAR 文件版本号

2023-12-12

我有一个用于集群的应用程序,以便在一个或多个失败时保持其可用,并且我想实现一种方法来检查 java 中 jar 文件的版本。

我有这段代码可以做到这一点(例如:在 MyClass 类中):

        URLClassLoader cl = (URLClassLoader) (new MyClass ())
            .getClass().getClassLoader();
        URL url = cl.findResource("META-INF/MANIFEST.MF");
        Manifest manifest = new Manifest(url.openStream());
        attributes = manifest.getMainAttributes();
        String version = attributes.getValue("Implementation-Version");

当我将 jar 作为应用程序运行时,它工作正常,但是当我在其他应用程序中使用 jar 文件作为库时,我得到了其他应用程序的版本号。

所以我的问题是,如何获取包含 MyClass 的 jar 的清单?

注意:我对使用静态约束的解决方案不感兴趣,例如 'classLoader.getRessource("MyJar.jar")' 或 File("MyJar.jar")


获取实现版本的正确方法是使用Package.getImplementationVersion() 方法:

String version = MyClass.class.getPackage().getImplementationVersion();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取 JAR 文件版本号 的相关文章

随机推荐

  • 自定义 Bash 提示符正在覆盖自身

    我正在使用自定义 bash 提示符来显示 git 分支 一切都在 etc bash bashrc function formattedGitBranch branch git branch 2 gt dev null sed e s d e
  • 选择每年的最佳记录

    我正在尝试回顾我的 sql 技能 现在我正在尝试在 Northwinddb 上运行一个简单的查询来向我显示每年的顶级客户 但是一旦我使用 TOP 函数 无论我在什么情况下 都只会显示 1 条记录分区依据 这是我的 T SQL 代码 SELE
  • ARM 中的 WFE 指令处理

    WFE 指令如何运作 我读到的是 它使处理器等待 IRQ FIQ event 但是 当您获得 IRQ 时会发生什么 irq fault handler 向量是否在获得中断或执行 WFE 之后的指令时执行 WFE 在概念上等同于 while
  • Firefox 滚动顶部问题

    我对 Firefox 的scrollTop 值和onscroll 事件有疑问 这在 IE Safari 和 Chrome 中效果很好 但 Firefox 似乎滞后 我尝试使用onscroll事件更新一些背景位置 但是当我拿起手柄并快速上下拖
  • ubuntu 16 上的 bash:set -e 不在子 shell 内继承

    当我运行这个命令时 set e echo echo I get himBH作为输出 我期待着这封信e包含在输出中 这是怎么回事 我使用的是 Ubuntu 16 04 1 LTS GNU bash 版本 4 3 46 1 release x8
  • 如何从 AngularJS 指令中选择动态生成的元素?

    在我的指令中 我需要选择某些 DOM 元素 其中一些元素是在 ng repeat 循环中动态生成的 如果我以直接的方式执行此操作 我将只获得静态元素 但是 如果我将选择延迟 500 毫秒 我将获得所有元素 这就是我想要的 虽然这可行 但它不
  • destroy_user_session_path 在 Rails 中触发 GET 而不是 DELETE

    我认为有以下代码 li li 它会生成以下 HTML a href users sign out Sign out a 但是 当单击该链接时 我收到以下错误 No route matches GET users sign out 我在这里做
  • 如何修复 Flask 蓝图的端点错误

    我正在用蓝图学习 Flask 我有以下代码示例 from flask import Flask render template Blueprint g bp Blueprint language name url prefix
  • 自定义 ListView 适配器。 TextChangedListener 调用错误的 EditText

    我有带有自定义适配器的旅行者列表 其中包含两个 EditText edtFirstName 和 edtLastName 我希望当用户输入文本时将更改保存到列表中 并且当单击下一个按钮时将此列表发送到另一个活动 My code public
  • 加密字符串从 Delphi 到 C#

    我正在尝试解密在 Delphi 中使用 Cipher1 3 0 加密的 C 中的一个字符串 来自 Delphi 加密纲要的第一部分 我使用 TCipher Rijndael 我加密的字符串是 this is a test example 密
  • 将字符串中除第一个和最后一个字符之外的所有字符替换为星号[重复]

    这个问题在这里已经有答案了 如何在PHP中将字符串中除了第一个和最后一个字符之外的所有字符替换为星号 例如test应该成为t t and profanity become p y等等 function get starred str len
  • 如何在没有 oledb 的情况下将 Excel 文件数据上传到 SQL Server

    我一直在尝试使用 ASP NET Core MVC 将数据从 Excel 文件导入到 SQL Server 中 但这段代码无法运行 HttpPost public IActionResult Index ICollection
  • NHibernate QueryOver 投影 - 将集合投影到 DTO

    我正在尝试将实体集合投影到 DTO 中 使用简单的属性就足够简单了 但是集合有问题 public class Blog public string Name get set public IList
  • JQuery mobile - 内容导航在纵向按钮上折叠

    我们正在开发一个布局接近 jqm 示例的应用程序here 左侧的目录和右侧的内容 但我们想要与 Sencha mobile 相同的行为 当它处于纵向时 目录会在导航按钮中折叠here 可以用jqm来做吗 我创建了一个示例 jQuery Mo
  • 需要 SIMPLESAMLPHP 后 SESSION 变量不起作用

    我的会话变量有问题 在我需要一次之后我无法设置任何变量 但我需要在登录后存储我的数据 这是代码 EDIT session start 位于 header php 中 我尝试在另一个页面上获取会话变量echo SESSION niva
  • Android getUriForFile IllegalArgumentException

    我用 Intent 发送文件的代码不适用于所有文件源 而且我还找不到解决方案 我的应用程序已注册用于打开文件 因此当我在 ES 文件资源管理器中选择文件时 意图如下所示 intent gt mData gt uriString storag
  • 对 <****.ViewController: 0x7fa425f07120> 的开始/结束外观转换的不平衡调用

    我看过很多与此错误相关的其他 stackoverflow 帖子 但在我的情况下我无法理解它 因此不知道如何解决 stackoverflow 帖子中的大多数回复 例如this例如 其中一个 涉及多个视图控制器 以及如何在前一个视图控制器完成之
  • 如何向WebRequest添加cookie?

    我正在尝试对一些代码进行单元测试 我需要替换它 HttpWebRequest httpWebRequest HttpWebRequest WebRequest Create uri httpWebRequest CookieContaine
  • 从 byte[] 转换为字符串

    我有以下代码 using BinaryReader br new BinaryReader File Open FILE PATH FileMode Open FileAccess ReadWrite int pos 0 int lengt
  • 获取 JAR 文件版本号

    我有一个用于集群的应用程序 以便在一个或多个失败时保持其可用 并且我想实现一种方法来检查 java 中 jar 文件的版本 我有这段代码可以做到这一点 例如 在 MyClass 类中 URLClassLoader cl URLClassLo