Puis-je accéder aux valeurs définies dans un manifeste Java à partir du code?Est-il possible d'accéder par programmation aux valeurs définies dans MANIFEST.MF?
Répondre
La plupart des valeurs de MANIFEST.MF peuvent être accédées par programme sans avoir à rechercher et/ou ouvrir le fichier jar lui-même.
La classe java.lang.Package
donne accès à la ImplementationTitle
, ImplementationVendor
, ImplementationVersion
, SpecificationTitle
, SpecificationVendor
et SpecificationVersion
.
Informations sur les classes signées peuvent être trouvées en utilisant la classe CodeSource
, qui peut être récupéré via Class
.getProtectionDomain()
.getCodeSource()
Merci! Savez-vous si c'est aussi disponible pour Android? – er4z0r
Personnellement, je ne sais pas, mais il semble que ce soit: http://developer.android.com/reference/java/lang/package-summary.html –
Merci. Je l'ai vérifié encore et trouvé que la solution de Jon fournit plus de flexibilité et est également disponible sur Android. – er4z0r
Essayez la classe d'utilitaires com.jcabi.manifests.Manifests
de jcabi-manifests. L'utilisation de cette classe, vous pouvez lire tous les fichiers disponibles MANIFEST.MF avec une doublure:
String name = Manifests.read("Foo-Name");
Aussi, consultez cet article: http://www.yegor256.com/2014/07/03/how-to-read-manifest-mf.html
Utilisez comme suit pour détecter Jar externe/SDK MANIFEST.MF Infos. Nous pourrions employer cette information pour détecter la version de pot etc. Employer http://docs.oracle.com/javase/6/docs/api/java/util/jar/Manifest.html
public void getSDKInfo() {
Package pkg = Manifest.class.getPackage();
String specTitle = pkg.getSpecificationTitle();
String vendor = pkg.getSpecificationVendor();
String version = pkg.getSpecificationVersion();
}
Ceci est encore plus flexible. Je vous remercie! – er4z0r