2014-02-12 4 views
11

Мне интересно, можно ли получить во время выполнения номер версии банку, из которой появился класс?Получить версию jar во время выполнения

Я знаю, что его можно найти банку, из которого класс приходит от:

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

но как насчет версии?

(предполагая, что его не в имени файла :))

+1

Банки не имеют версии. –

+0

Да, вы правы, версия принадлежит библиотечной версии, но в сленге это «взять jar-версию x.y.z», – 1ac0

ответ

13
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); 
    } 
} 
11

Try это, это может быть полезно:

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

Выход:

1.7 
1.7.0_25 
Смежные вопросы