Почему не удалось загрузить атрибут манифеста основного класса из файла JAR? - PullRequest
85 голосов
/ 07 апреля 2010

Я создал файл JAR таким образом jar cf jar-file input-files.Теперь я пытаюсь запустить его.Запуск не работает (команда jre не найдена):

jre -cp app.jar MainClass

Это также не работает:

java -jar main.jar

(Не удалось загрузить атрибут манифеста Main-Class из main.jar).

Я также обнаружил, что

Для запуска приложения, упакованного в файл JAR (версия 1.2 - требуется заголовок манифеста основного класса)

Что такое «заголовок манифеста основного класса»?Как мне его создать и куда его поместить?

Ответы [ 11 ]

62 голосов
/ 07 апреля 2010

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

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

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

java -jar app.jar

Заголовок Main-Class должен находиться в манифесте для файла JAR - это метаданные о таких вещах, как другие необходимые библиотеки. Информацию о том, как создать соответствующий манифест, см. В документации Sun . В основном вам нужно создать текстовый файл, который будет содержать следующую строку:

Main-Class: MainClass

Затем запустите

jar cfm app.jar manifest.txt *.class
35 голосов
/ 05 июля 2011
  1. установить путь к классу и скомпилировать

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

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

    Main-Class: yourApp newline

  3. создать свойApp.jar

    jar cvf0m yourApp.jar manifest.txt yourApp.class

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

    java -jar yourApp.jar

9 голосов
/ 23 июля 2010

Вы можете запустить с:

java -cp .;app.jar package.MainClass

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

6 голосов
/ 12 июня 2012

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

ПРАВИЛЬНО

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

НЕПРАВИЛЬНО

java -jar maui-1.0.jar maui.main.Examples tagging 
1 голос
/ 23 ноября 2011

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

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

0 голосов
/ 03 ноября 2015

Если вы используете Eclipse, попробуйте ниже: 1. Щелкните правой кнопкой мыши на проекте -> выберите Экспорт 2. Выберите Runnable Jar file в выберите место назначения экспорта 3. Введите имя банки и выберите «Требуется пакет ...» (второй переключатель) -> Готово

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

0 голосов
/ 17 августа 2015

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

0 голосов
/ 24 апреля 2015

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

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

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

0 голосов
/ 19 февраля 2015

Попробуйте

java -cp .:mail-1.4.1.jar JavaxMailHTML 

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

0 голосов
/ 22 сентября 2014

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

Что решило, так это:
jar cvfm test.jar Manifest.txt Test.class

Мой манифест имеет точку входа, как указано в документации Oracle (убедитесь, что в конце файла есть символ новой строки):
Main-Class: Тест

...