J'ai créé une bibliothèque simple AppInfo fournissant un moyen facile d'afficher des informations mises à jour automatiquement et toujours valides sur une version de logiciel en cours d'exécution dans les applications Java, particulièrement utile avec les versions automatiques du serveur CI.Comment obtenir le nom de JAR qui est une application de bureau à partir?
Dans ma bibliothèque, il est nécessaire de lire MANIFEST.MF à partir de JAR (dans le cas d'une application de bureau) qui est l'exécution de l'application finale (pas d'une autre sur un chemin de classe). Actuellement, j'utilise une solution basée sur une idée prise sous forme forum Sun (quel lien ne fonctionne plus):
String classContainer = classFromRightJar.getProtectionDomain().getCodeSource().getLocation().toString();
URL manifestUrl = new URL("jar:" + classContainer + "!/META-INF/MANIFEST.MF");
et il fonctionne en général, mais elle oblige les développeurs d'une application de bureau pour créer haricot supplémentaire configuré avec nom d'une classe qui se trouve dans un fichier JAR spécifique.
Existe-t-il une meilleure solution générique qui donne un nom/emplacement/MANIFEST.MF de/à partir de JAR, une application de bureau à partir de laquelle?
Merci pour votre aide
Marcin
L'idée était de créer une bibliothèque qui est attachée et fonctionne. J'avais peur s'il y avait un moyen de le faire de manière fiable. Je vais probablement forcer le développeur de l'application finale à créer un bean String avec un nom (+ package) de classe à partir de l'archive principale. C'est toujours facile à faire et beaucoup plus sûr. Merci pour votre réponse. Btw, joli hack avec traces de pile. –