Почему ему не удалось загрузить атрибут манифеста основного класса из 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)

Что такое заголовок манифеста Main-Class? Как создать его и где его поместить?

Ответ 1

Я не уверен, что считаю ваши симптомы:

  • Если команда jre не найдена, то запуск jre -cp app.jar должен давать ту же ошибку
  • Просто добавив файл JAR в путь к классам, вы не должны указывать на ошибку, которую видите.

Я ожидаю, что вы увидите эту ошибку, если вы запустите:

java -jar app.jar

Заголовок основного класса должен находиться в манифесте для файла JAR - это метаданные о вещах, подобных другим требуемым библиотекам. См. Документацию

Ответ 2

  • задайте путь к классам и скомпилируйте

    javac -classpath "C:\Program Files\Java\jdk1.6.0_updateVersion\tools.jar" yourApp.java

  • создать manifest.txt

    Основной класс: newApp newline

  • создать yourApp.jar

    jar cvf0m yourApp.jar manifest.txt yourApp.class

  • запустите yourApp.jar

    java -jar yourApp.jar

Ответ 3

Вы можете работать с:

java -cp .;app.jar package.MainClass

Он работает для меня, если в файле JAR нет манифеста.

Ответ 4

Я получил эту ошибку, и это было потому, что у меня были аргументы в неправильном порядке:

ПРАВИЛЬНОЕ

java maui.main.Examples tagging -jar maui-1.0.jar 

НЕПРАВИЛЬНО

java -jar maui-1.0.jar maui.main.Examples tagging 

Ответ 6

Самый простой способ убедиться, что вы создали исполняемый JAR файл правильно, с соответствующим файлом манифеста, должен использовать Eclipse построить его для вас. В своем проекте Eclipse вы просто просто выберите "Файл/Экспорт" из меню и следуйте инструкциям.

Таким образом, вы можете быть уверены, что ваш JAR файл верен и будет знать, что искать в другом месте, если есть проблема. Процесс описан полностью в FAQ Как создать исполняемый JAR файл для отдельной SWT-программы?.

Ответ 7

Я обнаружил, что у меня также была ошибка в NetBeans. Я надеюсь, что следующее будет полезно.

  • Убедитесь, что при переходе к Project Configuration вы устанавливаете основной класс, который вы собираетесь использовать.
  • Сделайте сборку или чистую сборку
  • Поместите файл jar, где хотите, и попробуйте: java -jar "YourProject.jar" снова в командной строке.

Это была проблема, которую я получал, потому что у меня были другие "тестовые" программы, которые я использовал в NetBeans, и мне нужно было убедиться, что основной класс в разделе "Выполнение" конфигурации проекта был установлен правильно.

много благословений, John P

Ответ 8

Я получал ту же ошибку, когда я запускал:
jar cvfm test.jar Test.class Manifest.txt

Что это было: jar cvfm test.jar Manifest.txt Test.class

Мой манифест имеет точку входа, указанную в документах oracle (убедитесь, что в конце файла есть новый символ строки):
Основной класс: тест

Ответ 9

Try

java -cp .:mail-1.4.1.jar JavaxMailHTML 

не нужно иметь manifest файл.

Ответ 10

Я столкнулся с той же проблемой. Эта команда unix не может найти основной класс. Это связано с тем, что версии JDK времени выполнения и времени компиляции различны. Сделайте jar через eclipse после изменения версии java-компилятора. Мне помогла следующая ссылка.

http://crunchify.com/exception-in-thread-main-java-lang-unsupportedclassversionerror-comcrunchifymain-unsupported-major-minor-version-51-0/

Попробуйте запустить банку, созданную после этого шага, а затем выполните ее

Ответ 11

Если ваш путь класса полностью указан в манифесте, возможно, вам нужна последняя версия среды выполнения Java. Моя проблема исправлена, когда я переустановил jre 8.

Ответ 12

Если вы используете eclipse, попробуйте сделать следующее: 1. Щелкните правой кнопкой мыши по проекту → выберите Экспорт 2. Выберите файл Runnable Jar в списке выбора экспорта 3. Введите имя баннера и выберите "Требуется пакет..." (вторая кнопка) → Готово

Надеюсь, это поможет...!