Мне нужно обновить манифест в моем файле jar, который я создаю (экспортирует) в Eclipse. Я попытался последовать за this объяснениями без успеха. Я не совсем уверен, что указать в командной строке. Веб-сайт Oracle не слишком ясен. Затем я нашел сообщение о SO, в котором говорится, чтобы извлечь файл manifest.mf из архива jar, обновить его и добавить его обратно в архив jar. Я тоже это пробовал и, похоже, работает, однако, во время выполнения, я получаю java.io.IOException: invalid manifest format
. Каков правильный способ обновления manifest.mf, чтобы добавить новые атрибуты? Пример был бы наиболее полезным.Обновление файла манифеста jar. Java.io.IOException: недопустимый формат манифеста
ответ
Ссылки, предлагаемые Петром, были частично полезны. Тем не менее, я смог решить это более или менее путем проб и ошибок. Документы Oracle, объясняющие, как это сделать, требуют большой работы. У них нет хорошего примера того, как действовать. В любом случае, для тех, кто сталкивается с теми же проблемами, вот что я сделал. Я создал текстовый файл (например, «Manifest.txt») с помощью Notepad, который содержит атрибуты манифеста, которые я хотел добавить/обновить. При создании этого файла я обязательно добавил новый символ строки в последнюю строку, нажав клавишу на клавиатуре. Затем я создал файл bat DOS для фактической модификации. Вот как это выглядело ...
echo Updating manifest permissions...
"C:\Program Files\Java\jdk1.7.0_25\bin\jar" -umf "c:\some folder\Manifest.txt" "C:\some folder\jartoupdate.jar"
Порядка аргументов баночки, как они относятся к реальным путям, которые следуют в командной строке имеет важное значение. Ссылки из ответа Питера указали на эту часть.
При модификации ОГЛАВЛЕНИЕ баночки вы должны более смотреть в этом направлении:
http://docs.oracle.com/javase/tutorial/deployment/jar/update.html и особенно
http://docs.oracle.com/javase/tutorial/deployment/jar/modman.html, который описывает процесс
обновления манифеста.
Чтобы обновить манифест в файле jar, вы нашли ответ в документах oracle. Вот еще одно место, чтобы увидеть ответ. Предполагая, что вы прочитали доступ к каталогу, где установлена JDK и документация была загружена с ним (легко загрузить документацию, это для SE7 http://www.oracle.com/technetwork/java/javase/documentation/java-se-7-doc-download-435117.html):
перейти к [install_directory]/документов. Файл содержит index.html.
>>>>, например. шахта для JDK 6 называется C: \ my_TOOLS \ Java_stuff \ jdk_1.6.0_20 \ Docs \ index.htmlПеретащите index.html на странице браузера.
Эта страница показывает вам обзор документации JDK и содержит много ссылок на полезную информацию. В строке верхней строки строки Java Language щелкните JAR. Он переводит вас на страницу, суммирующую документацию (со ссылками) jartool.
В разделе «Инструменты JAR» этой страницы нажмите ссылку ссылки на страницу для вашей платформы (возможно, вам нужна «справочная страница инструмента JAR для Windows»).Эта справочная страница инструмента JAR показывает подробную документацию для команды jar. Здесь вы увидите пример « jar umf Manifest.txt my_jar.jar». (Solaris/Linux не использует «-» перед аргументами, такими как «umf».
Я использовал его (на Linux), чтобы объединить 2 пользовательские файлы манифеста в манифест по умолчанию и положил его в банку. Я делаю это в двухэтапном процессе, но мне было бы интересно узнать одноэтапную команду для этого. (Используя два м, чтобы команда банки вызывает второй манифест перезаписать первый манифест - не слит.) (Помните, каждый файл манифест должен заканчиваться пустой строкой.)
Manifest.txt содержит «Имя:» и "Реализация-версии:"
Manifest.my_app.txt содержит "Main-Class:" и "Class-Path:"
по умолчанию манифест содержит "Manifest-Version:" и "Создано-By:"
jar cmf my_app.jar Manifest.txt my_main.class my_utils.class
jar umf Manifest.my_app.txt my_app.jar
После это, мой META-INF/MANIFEST.MF содержит все поля из всех 3 манифестаций. Я ожидал, что их присоединят друг к другу, но поля смешались. Может быть, кто-то может сказать, как их заказать или просто добавить. Это порядок, в котором они отображаются в моем текущем META-INF/MANIFEST.MF.
Manifest-Version: 1.0
Implementation-Title: my_app
Implementation-Version: 1.2.1
Class-Path: ...
Name: My App
Created-By: 1.6.0_20 (Oracle Corporation)
Main-Class: My_App
Надеюсь, что часть этого полезна для вас.
В файле манифеста содержится в META-INF поддиректорию баночки файла под названием MANIFEST.MF .Whenever вы создаете файл фляги для командной строки с помощью команды банку CVF Jarfilename FilesToadd Затем файл манифеста по умолчанию является создано. Можно просмотреть этот файл и получить представление о действительном файле манифеста. Чтобы извлечь файл манифеста из jar-типа, введите следующую команду в cmd jar xvf Jarfilename Теперь подкаталог META-INF появится в базовом каталоге, здесь вы можете просмотреть файл манифеста по умолчанию. Иногда при обновлении файла манифеста мы получаем java.io.IOException: неверный формат манифеста .Это ошибка возникает из-за следующих причин:
1.You может не осталось пространство между именем и значением любого раздела манифеста file,
Версия: 1.1 - это необязательный раздел, вместо этого напишите Версия: 1.1 что пространство между двоеточием и 1.1 действительно имеет значение.
2. При указании основного класса вы, возможно, добавили расширение .class в конце имени класса. Просто укажите основной класс, набрав Main-Class: Classname.
3.You, возможно, не добавил символ новой строки в конце file.You не нужно писать \ п для указания новой строки, а не просто оставить последнюю строку вашего манифеста файла заготовки, которая будет служить цели
4. Ваш текстовый файл для манифеста должен использовать кодировку UTF-8, иначе вы можете столкнуться с некоторыми неприятностями.
Наконец, я предоставляю пример того, как должен выглядеть файл манифеста. Здесь пакет калькулятор, а основным классом является калькулятор.Java
Manifest-Version: 2.1
Создано-By: UselessCoder
Пакет-Имя: калькулятор
класса Название: calculator.Calculator.java
Main-Class: калькулятор . Калькулятор
- 1. Создание JAR манифеста
- 2. Проблема МАНИФЕСТА - пакет JAR
- 3. Обновление файла файла манифеста appcache автоматически
- 4. Использование Java для чтения файла манифеста .jar
- 5. Путаница по использованию файла манифеста Jar
- 6. Создание файла jar - нет основного манифеста atribute
- 7. Как найти класс манифеста файла jar?
- 8. Чтение содержимого файла манифеста JAR из Javascript
- 9. Недопустимый тип манифеста манифеста при обслуживании с помощью обработчика ashx
- 10. Обновление манифеста кэша приложений
- 11. jar, не найдено основного манифеста
- 12. Атрибут манифеста для java jar
- 13. Недопустимый дайджест файла сигнатуры для исключения основных атрибутов манифеста при попытке запуска файла jar
- 14. Spark & Maven: SecurityException: Недопустимый дайджест файла подписи для манифеста
- 15. Ошибка файла манифеста Actionbarsherlok
- 16. разрешение файла манифеста Android
- 17. Настройка файла манифеста Android
- 18. Как проверить файл манифеста-манифеста?
- 19. Обновление значения внутри манифеста android
- 20. Обновление манифеста Версия от Pom
- 21. Добавление атрибута манифеста JAR через ANT TASK
- 22. Как выполнить jar без основного атрибута манифеста?
- 23. HTML 5 автономный тип манифеста манифеста
- 24. java.lang.SecurityException: Недопустимый дайджест файла подписи для основных атрибутов манифеста
- 25. CLASSPATH и файл манифеста
- 26. Maven: изменение файлов манифеста зависимостей JAR
- 27. JAR-файл манифеста не содержит атрибута разрешения
- 28. Чтение манифеста моей собственной Jar в
- 29. Файл манифеста Maven исключает полный путь JAR
- 30. Java jar - нет основного атрибута манифеста
Вы знаете, что все [документация по Java] (http://docs.oracle.com/javase/8/docs/index.html) находится в сети, не так ли? – dimo414