Я нашел другое решение для загрузки MANIFEST.MF без ссылки на контекст сервлета, просто используя Spring Framework.
Я использовал эту конфигурацию с Spring 3.1.2.RELEASE, но я считаю, что она должна работать нормальнов более поздних выпусках.
Сначала напишите следующий bean-компонент в вашем applicationContext.xml
<bean class="java.util.jar.Manifest" id="manifest">
<constructor-arg>
<value>/META-INF/MANIFEST.MF</value>
</constructor-arg>
</bean>
Вы должны заметить, что аргумент конструктора из класса Manifest принимает InputStream какпараметр, однако, вам не нужно беспокоиться об этом, потому что Spring преобразует предоставленное значение в соответствие с аргументами конструктора.Более того, начиная путь с косой черты /
(/ META-INF / ...), Spring ищет этот файл в объекте контекста сервлета, тогда как, начиная с префикса classpath:
, он направляет Spring для поиска пути к классам, чтобы найтизапрашиваемый ресурс.
Во-вторых, объявите вышеупомянутый компонент в вашем классе:
@Autowired
@Qualifier("manifest")
private Manifest manifest;
Мой MANIFEST.MF находится в папке $ WEBAPP_ROOT / META-INF /и я успешно протестировал это решение на Apache Tomcat 7 и WildFly 8.