Как создать файл Manifest
для группы файлов JAR, которые я уже создал.
Я использовал Eclipse для создания моего JAR файла.
Есть ли лучший способ создания JAR файла с Manifest
?
Как создать файл Manifest
для группы файлов JAR, которые я уже создал.
Я использовал Eclipse для создания моего JAR файла.
Есть ли лучший способ создания JAR файла с Manifest
?
Eclipse предоставляет опции для создания файла манифеста для Jar, сохранения сгенерированного манифеста в проекте или использования указанного файла для манифеста.
У меня Eclipse 3.4.2 и он на четвертом экране в этом процессе:
Щелкните правой кнопкой мыши Project → Export → Java/JAR file, Next, JAR File Specification, Next, JAR Packaging Options, Next, JAR Manifest Specification.
По умолчанию нужно просто сгенерировать манифест по умолчанию для JAR, а не сохранять сгенерированный файл обратно в проект, поэтому, если вы откроете свой JAR файл, у него будет манифест, но у него просто будет что-то вроде
Manifest-Version: 1.0
в нем.
Если вы хотите изменить существующие JAR без их повторной сборки, самый простой способ - это просто сделать так, как предложил mad-j, и открыть их с помощью Zip-инструмента и отредактировать существующий файл /META -INF/MANIFEST.MF и сохраните его обратно в JAR.
Сегодня я столкнулся с этой проблемой.
Да, Eclipse создаст манифест для вас, но это действительно шутка.
Он включает только строку Manifest-Version: 1.0
. Я не понял, как добавить его в свой основной класс, поэтому я создал свой собственный файл MANIFEST.MF, добавив его в основной каталог проекта (не src, а не lib). Затем, когда я перейду в "Экспорт" > "Файл JAR", нажмите "Далее" до конца (не нажимайте Finish слишком рано) и выберите опцию, чтобы выбрать манифест из проекта. Выберите файл манифеста, который вы только что добавили в свой проект. Убедитесь, что манифест имеет путь к вашему основному классу (например, com.company и т.д.). Например, как выглядит основной файл манифеста:
Manifest-Version: 1.0
Created-By: 1.6.0 (Sun Microsystems Inc.)
Main-Class: MyPackage.MyClass
Я попробовал метод @Michael, но в итоге у меня не осталось файлов классов, оставшихся в JAR, и только файлы манифеста. Мой метод выше хорошо работает.
манифест - это простой текстовый файл, учебник Sun подробно описывает его содержимое.
Все, что вам нужно сделать, это создать такой файл и обновить файлы JAR с помощью этой команды:
jar cfm <jar-file> <manifest-addition>
С помощью Ant вы можете использовать задачу jar. Он имеет явный вариант, чтобы указать все атрибуты, которые нужно включить. Что-то вроде этого:
<target name="create-my-jar">
<jar jarfile="foo.jar" basedir="bin/classes">
<manifest>
<attribute name="Class-Path" value="xxx"/>
<attribute name="Ant-Version" value="${ant.version}"/>
<attribute name="Created-By" value="JDK ${java.version} (${java.vendor})"/>
<attribute name='Specification-Title' value='xxx' />
<attribute name='Specification-Version' value='xxx' />
<attribute name='Specification-Vendor' value='xxx' />
<attribute name='Implementation-Title' value='xxx' />
<attribute name='Implementation-Version' value='xxx' />
<attribute name='Implementation-Vendor' value='xxx' />
<attribute name='Implementation-Vendor-Id' value='xxx' />
<attribute name='Implementation-Vendor-URL' value='xxx' />
<attribute name="Built-By" value="${user.name}"/>
<attribute name='Build-Date' value='xxx'/>
<attribute name='Build-Time' value='xxx'/>
</manifest>
</jar>
</target>
Файл манифеста по умолчанию создается при создании jar
с помощью jar cf jar-file inputs-files
.
Файлы манифеста - это текстовые файлы. И поскольку файлы JAR - это файлы ZIP, вы также можете добавить манифест с помощью инструмента, такого как 7-zip. Это, конечно, не работает для подписанных JAR.
Также вы можете взглянуть на эту документацию, это помогло мне решить проблему с помощью мастера Eclipse.
Используя Eclipse, на странице спецификации JAR Manifest внизу, есть текстовое поле, в котором вы можете просмотреть свой Основной класс. Перейдите в свой Основной класс и нажмите "Готово". Это генерирует манифест с информацией основного класса, позволяющей выполнить файл jar. -Dev On