在运行时获取jar版本
我想知道是否有可能在运行时检索该类来自的jar的版本号?
我知道有可能找到这个类来自的jar:
MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath();
但是版本怎么样?
(假设它不在文件名:))
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); } }
试试这个,它可能会有所帮助:
String s = new String(); System.out.println(s.getClass().getPackage().getSpecificationVersion()); System.out.println(s.getClass().getPackage().getImplementationVersion());
输出:
1.7 1.7.0_25
- 如何制作一个可运行的jar文件?
- java程序启动时会发生什么?
- javac:invalid flag:activation-1.1.jar
- 如何在jar中validationMANIFEST.MF的顺序?
- 如何在不重新打包整个jar的情况下更新jar中的一个文件?
- 具有依赖性的可执行Jar
- 如何使用Package类的getImplementationVersion()方法从JAR的清单中获取包版本
- 使用命令行参数运行jar文件
- Spring Error – java.lang.NoSuchMethodError:> org.springframework.beans.factory.annotation.InjectionMetadata。