it-swarm.com.ru

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

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

85
Roman

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

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

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

Java -jar app.jar

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

Main-Class: MainClass

Тогда беги

jar cfm app.jar manifest.txt *.class
62
Jon Skeet
  1. установить путь к классу и скомпилировать

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

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

    Main-Class: ваше приложение новая строка

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

    jar cvf0m yourApp.jar manifest.txt yourApp.class

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

    Java -jar yourApp.jar

35
weirdFactory

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

Java -cp .;app.jar package.MainClass

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

9
Dainius

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

ПРАВИЛЬНЫЙ

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

НЕПРАВИЛЬНО

Java -jar maui-1.0.jar maui.main.Examples tagging 
6
Sridhar-Sarnobat

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

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

1
Greg Burdett

Пытаться

Java -cp .:mail-1.4.1.jar JavaxMailHTML 

нет необходимости иметь manifest файл.

0
user4581964

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

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

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

0
Harshita Sethi

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

0
AmirHossein Rezaei

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

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

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

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

0
john p

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

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

0
Barani r