Не могу выполнить jar-файл: "нет основного атрибута манифеста" - PullRequest
798 голосов
/ 13 марта 2012

Я установил приложение, когда я пытаюсь его запустить (это исполняемый файл jar), ничего не происходит. Когда я запускаю его из командной строки с помощью:

java -jar "app.jar"

Я получаю следующее сообщение:

без атрибута основного манифеста, в "app.jar"

Обычно, если бы я создал программу сам, я бы добавил атрибут основного класса в файл манифеста. Но в этом случае, так как файл из приложения, я не могу этого сделать. Я также попытался извлечь банку, чтобы посмотреть, смогу ли я найти основной класс, но есть много классов, и ни один из них не имеет слова «main» в своем названии. Должен быть способ исправить это, потому что программа отлично работает в других системах.

Ответы [ 34 ]

0 голосов
/ 15 марта 2019

Нашел отличное решение, которое помогло бы в любой такой ситуации, если вам просто нужен работающий сосуд, что вы и делаете в большинстве случаев. Если ваше приложение работает в Intellij Idea, выполните следующие действия: 1) Зайдите в настройки модуля и затем артефакты, добавьте банку и определите основной класс 2) Затем зайдите в меню «Сборка» и нажмите «Артефакт сборки», и вы получите банку.

Это работало, даже когда я изменил исходную папку и использовал scala вместо java.

0 голосов
/ 04 декабря 2016

проверьте файл JAR внутри MANIFEST.MF. Доступен или нет основной класс

first.java

class first
{
        public static void main (String arg[ ])
        {
           System.out.println("Welcome to the world of Java");
        }
}

До :

Manifest-Version: 1.0
Created-By: 1.7.0_80 (Oracle Corporation)

sony@sony-VPCEH25EN:~/Documents$ java -jar first.jar
no main manifest attribute, in first.jar

После:

Manifest-Version: 1.0
Created-By: 1.7.0_80 (Oracle Corporation)
Main-Class: first

sony@sony-VPCEH25EN:~/Documents$ java -jar first.jar 
Welcome to the world of Java
0 голосов
/ 05 июля 2016

Проверьте локальный каталог .m2 на наличие подкаталога этого артефакта. Если exixts - удалите его и выполните обновление Maven снова

0 голосов
/ 28 декабря 2016

У меня была такая же проблема, как и у вас, ниже приведен синтаксис для успешного создания файла .war: -

jar {cvf} [файл jar] [файл манифеста]

манифест При создании (c) или обновлении (u) файла JAR операнд манифеста определяет существующие файлы манифеста с именами и значениями атрибутов, которые должны быть включены в файл MANIFEST.MF в файле JAR. Операнд манифеста должен быть указан, если присутствует опция f '[ 1 ]'.

Чтобы создать файл манифеста, вам нужно определить значение для некоторых атрибутов, вы можете поставить звездочку после имени файла (.WAR), чтобы избежать создания файла манифеста: -

jar -cvf foo.war *

Если честно, я не знаю, является ли это наилучшей практикой, но она делает работу для меня:).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...