当前位置: 首页 > 知识库问答 >
问题:

在运行时获取jar版本

师承弼
2023-03-14

我想知道是否可以在运行时检索类的来源的jar的版本号?

我知道有可能找到类的来源:

MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath();

但是一个版本呢?

(假设它不在文件名中:))

共有2个答案

司徒浩思
2023-03-14

试试这个,可能会有帮助:

String s = new String();
System.out.println(s.getClass().getPackage().getSpecificationVersion());
System.out.println(s.getClass().getPackage().getImplementationVersion());

输出:

1.7
1.7.0_25
臧威
2023-03-14
import javax.mail.internet.InternetAddress;

/**
Display package name and version information for javax.mail.internet.
*/
public final class ReadVersion {
  public static void main(String... aArgs){
    ReadVersion readVersion = new ReadVersion();
    readVersion.readVersionInfoInManifest();
  }

  public void readVersionInfoInManifest(){
    InternetAddress object = new InternetAddress();
    Package objPackage = object.getClass().getPackage();
    //examine the package object 
    String name = objPackage.getSpecificationTitle();
    String version = objPackage.getSpecificationVersion();
    //some jars may use 'Implementation Version' entries in the manifest instead
    System.out.println("Package name: " + name);
    System.out.println("Package version: " + version);
  }
}
 类似资料:
  • 问题内容: 我想知道是否有可能在运行时检索该类来自的jar的版本号? 我知道可以找到该类来自的jar: 但是版本呢? (假设其不在文件名中:) 问题答案:

  • 问题内容: 我需要解决JDK 1.5中的Java错误,该错误已在1.6中修复。我正在使用以下条件: 这对其他JVM有用吗?有更好的方法来检查吗? 问题答案: 是每个JVM中都存在的系统属性。有两种可能的格式: Java的8或降低:1.6.0_23,1.7.0,1.7.0_80,1.8.0_211 Java的9或更高:9.0.1,11.0.4,12,12.0.1 这是提取主要版本的技巧:如果它是版本

  • 问题内容: 我注意到在Maven工件的JAR中,project.version属性包含在两个文件中: 是否有建议的方式在运行时读取此版本? 问题答案: 你无需访问特定于Maven的文件即可获取任何给定库/类的版本信息。 你可以简单地使用来获取存储在中的版本信息。幸运的是,足够聪明,不幸的是,默认情况下,也不将正确的信息写入清单! 相反,必须修改的设置元素和,如下所示: 理想情况下,应将此配置放入公

  • 如何在运行Tomcat时获取包版本? 我尝试getClass().getPackage().GetImplementationVersion(),但这总是返回。我想这是因为我的war还没有打包,而Tomcat执行了.classes(又名分解的war)。存在于终战中,但不存在于文件夹中 java.lang.Package 相关的是在运行时获取Maven工件版本 更新。之前我已经添加了war构建的配置

  • 问题内容: 我试图在运行时将jar文件添加到classpath。我用这个代码 系统输出打印此URL: 我正在仔细检查此路径,此jar存在。即使这个测试也显示com.mysql.jdbc。驱动程序类存在。 但是,当我使用此Class.forName(driver)时,仍然会收到java.lang.ClassNotFoundException。此代码有什么问题? 问题答案: URL可以,但是您仍然尝试

  • 问题内容: 我们有以下课程 和这个 现在,我需要在运行时知道is是否为 。由于这是jpa自动处理的,因此我无法获取此值。 我们正在调用一个带有as参数的方法,我想避免使用它来检查它是什么类型。如果我可以做些类似的事情会更酷 问题答案: 您可以将鉴别符映射为只读属性: