Путь к классу файла Java Manifest и как он определяет относительные каталоги

Как путь к классам в файле MANIFEST.MF определяет относительное местоположение?

1) Скажем, у меня есть банка с банкой внутри lib/somejar.jar и OFC файл манифеста находится внутри META-INF/MANIFEST.MF, Как бы я установить classpath....? Будет ли это Class-path: lib/somejar.jar или же ../lib/somejar.jar?

2) Предположим, что в somejar.jar также есть другие jar-файлы, от которых зависит основной jar-файл. И, конечно, somejar.jar также имеет свой собственный файл MANIFEST.MF с правильно установленным полем Class-path. Теперь давайте скажем, что исходный основной файл JAR во время выполнения должен иметь доступ к одному из этих файлов JAR, сможет ли он это делать, пока somejar.jar находится в classpath main.jar? Или относительные каталоги испорчены, так как основной jar работает под именем somejar.jar, больше не root?

незначительное обновление: все это будет выполняться в веб-среде на сервере приложений.

1 ответ

Решение

Делая это "простая ваниль", вы не можете иметь JAR внутри JAR. Вам нужно либо поместить его наружу по известному пути относительно основного JAR-файла, либо извлечь содержимое JAR-файла в основной JAR-файл.

Но начиная с Eclipse 3.5 вы можете сделать это с помощью встроенного трюка. Отметьте опцию 2nd Library Handling, когда вы выбираете Export> Runnable JAR file.

альтернативный текст

При выборе Package требуемых библиотек в сгенерированном JAR, Eclipse добавит специальный загрузчик классов, который будет загружать эти JAR прозрачно для вас перед выполнением основного класса. Это делает это с помощью JarRsrcLoader,

Другие вопросы по тегам