У меня есть webapp, который содержит файл манифеста, в котором я пишу текущую версию моего приложения во время задачи сборки ant. Файл манифеста создается правильно, но когда я пытаюсь прочитать его во время выполнения, я получаю некоторые странные побочные эффекты. Мой код для чтения в манифесте выглядит примерно так:
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());
}
Когда я прикрепляю eclipse к tomcat, я вижу, что приведенный выше код работает, но он, похоже, получает другой файл манифеста, чем тот, который я ожидал, что я могу сказать, потому что ant версия и время создания сборки оба разные. Затем я поставил там "META-INFFFF", и этот код по-прежнему работает! Это означает, что я читаю еще один манифест, а не мой. Я также пробовал
this.getClass().getClassLoader().getResourceAsStream(...)
Но результат был тот же. Каков правильный способ чтения файла манифеста изнутри webapp, работающего в tomcat?
Изменить. Спасибо за предложения. Кроме того, я должен отметить, что я запускаю tomcat отдельно; Я запускаю его из командной строки, а затем присоединяю к исполняемому экземпляру в отладчике Eclipse. Это не должно иметь значения, не так ли?