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

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

  2. создать manifest.txt

    Main-Class: твое приложение newline

  3. создать yourApp.jar

    jar cvf0m yourApp.jar manifest.txt yourApp.class

  4. запустите 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. Я надеюсь, что следующее полезно.

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

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

много благословений, Джон П

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

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

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

Если вы используете eclipse, попробуйте ниже: 1. Щелкните правой кнопкой мыши по проекту -> выберите Export 2. Выберите файл Runnable Jar в выберите место назначения экспорта 3. Введите имя банки и выберите "Package required ... " (второй переключатель) -> Готово

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

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