J'ai une application web qui contient un fichier manifeste, dans lequel j'écris la version actuelle de mon application lors d'une tâche de compilation par ant. Le fichier manifest est créé correctement, mais lorsque j'essaie de le lire pendant l'exécution, j'obtiens des effets de bord étranges. Mon code pour lire le manifeste est à peu près le suivant :
InputStream manifestStream = Thread.currentThread()
.getContextClassLoader()
.getResourceAsStream("META-INFFFF/MANIFEST.MF");
try {
Manifest manifest = new Manifest(manifestStream);
Attributes attributes = manifest.getMainAttributes();
String impVersion = attributes.getValue("Implementation-Version");
mVersionString = impVersion;
}
catch(IOException ex) {
logger.warn("Error while reading version: " + ex.getMessage());
}
Lorsque j'attache eclipse à tomcat, je vois que le code ci-dessus fonctionne, mais il semble obtenir un fichier manifest différent de celui que j'attendais, ce que je peux dire parce que la version ant et le timestamp de construction sont tous deux différents. Ensuite, j'ai mis "META-INFFFF" dans ce fichier, et le code ci-dessus fonctionne toujours ! Cela signifie que je lis un autre manifeste, pas le mien. J'ai aussi essayé
this.getClass().getClassLoader().getResourceAsStream(...)
Mais le résultat est le même. Quelle est la bonne façon de lire le fichier manifest à l'intérieur d'une application web fonctionnant sous tomcat ?
Editar : Merci pour les suggestions faites jusqu'à présent. Il convient également de noter que j'ai am Je lance tomcat en mode autonome à partir de la ligne de commande, puis je m'attache à l'instance en cours d'exécution dans le débogueur d'Eclipse. Cela ne devrait pas faire de différence, n'est-ce pas ?
0 votes
La réponse de @PascalThivent est la bonne. Ajoutez une gestion des exceptions dans le cas où votre MANIFEST n'existe pas (ie.:IDE) et ce devrait être A1.
0 votes
Cette méthode universelle m'a aidé : [ [stackoverflow.com/a/29103019/3158918]](http://stackoverflow.com/a/29103019/3158918])