Почему не удалось загрузить атрибут манифеста основного класса из файла JAR?
Я создал файл JAR таким образом jar cf jar-file input-files
, Теперь я пытаюсь запустить его. Запуск не работает (команда jre не найдена):
jre -cp app.jar MainClass
Это тоже не работает:
java -jar main.jar
(Не удалось загрузить атрибут манифеста Main-Class из main.jar).
Я также узнал, что
Для запуска приложения, упакованного в JAR-файл (версия 1.2 - требуется заголовок манифеста Main-Class)
Что такое "заголовок манифеста основного класса"? Как мне его создать и куда мне его поместить?
11 ответов
Я не уверен, что верю твоим симптомам:
- Если
jre
команда не найдена, затем выполняетсяjre -cp app.jar
должен дать ту же ошибку - Простое добавление файла JAR в путь к классу не должно приводить к ошибке, которую вы видите
Я ожидаю, что вы увидите эту ошибку, если вы запустите:
java -jar app.jar
Заголовок Main-Class должен находиться в манифесте для файла JAR - это метаданные о вещах, подобных другим необходимым библиотекам. См. Документацию Sun о том, как создать соответствующий манифест. По сути, вам нужно создать текстовый файл, который будет содержать следующую строку:
Main-Class: MainClass
Тогда беги
jar cfm app.jar manifest.txt *.class
установить путь к классу и скомпилировать
javac -classpath "C: \ Program Files \ Java \ jdk1.6.0_updateVersion\ tools.jar" yourApp.java
создать manifest.txt
Main-Class: твое приложение newline
создать yourApp.jar
jar cvf0m yourApp.jar manifest.txt yourApp.class
запустите yourApp.jar
java -jar yourApp.jar
Вы можете запустить с:
java -cp .;app.jar package.MainClass
Это работает для меня, если в файле JAR нет манифеста.
Я получил эту ошибку, и это было, потому что у меня были аргументы в неправильном порядке:
ПРАВИЛЬНЫЙ
java maui.main.Examples tagging -jar maui-1.0.jar
НЕПРАВИЛЬНО
java -jar maui-1.0.jar maui.main.Examples tagging
Самый простой способ убедиться, что вы правильно создали исполняемый файл JAR с соответствующим файлом манифеста, - это использовать Eclipse для его создания. В своем проекте Eclipse вы просто выбираете File/Export из меню и следуете инструкциям.
Таким образом, вы можете быть уверены, что ваш JAR-файл правильный и будет знать, где искать, если проблема все еще существует. Процесс полностью описан в FAQ. Как мне создать исполняемый файл JAR для автономной программы SWT?,
Пытаться
java -cp .:mail-1.4.1.jar JavaxMailHTML
не нужно иметь manifest
файл.
Я получил ту же ошибку, когда я бежал:
jar cvfm test.jar Test.class Manifest.txt
Что решило это было так:
jar cvfm test.jar Manifest.txt Test.class
Мой манифест имеет точку входа, как указано в документации Oracle (убедитесь, что в конце файла есть символ новой строки):
Основной класс: Тест
Если ваш путь к классу полностью указан в манифесте, возможно, вам нужна последняя версия среды выполнения Java. Моя проблема исправлена, когда я переустановил JRE 8.
Я обнаружил, что у меня также была эта ошибка в NetBeans. Я надеюсь, что следующее полезно.
- Убедитесь, что при переходе в Project Configuration вы устанавливаете основной класс, который вы хотите запустить.
- Делать сборку или чистую сборку
- Разместите файл jar там, где вы хотите, и попробуйте: java -jar "YourProject.jar" снова в командной строке.
Это была проблема, которую я получал, потому что у меня были другие "тестовые" программы, которые я использовал в NetBeans, и я должен был убедиться, что Main Class в части Run конфигурации проекта был установлен правильно.
много благословений, Джон П
Я столкнулся с той же проблемой. Эта команда unix не может найти основной класс. Это связано с тем, что версии JDK времени выполнения и времени компиляции различаются. Сделайте jar через eclipse после изменения версии компилятора java. Следующая ссылка помогла мне.
Попробуйте запустить банку, созданную после этого шага, а затем выполните ее
Если вы используете eclipse, попробуйте ниже: 1. Щелкните правой кнопкой мыши по проекту -> выберите Export 2. Выберите файл Runnable Jar в выберите место назначения экспорта 3. Введите имя банки и выберите "Package required ... " (второй переключатель) -> Готово
Надеюсь это поможет...!