@aye_balbec

Как исправить ошибку «no main manifest attribute»?

По какой-то причине у меня не получается создать исполняемый jar архив. Все время, когда я запускаю его, выходит "no main manifest attribute".
Вот исходный код:
package package1;

public class Dime2{
    public static void main(String [] args){
        try{
            System.out.println("Hello world");
            Thread.sleep(10000);
        } catch(Exception exc){}
    }
}

Вот команды которые я вводил:
javac package1/Dime2.java
jar cfm dime.jar manifest.txt package1/Dime2.class

А в файле manifest.txt я написал только Main-Class: package1.Dime2
  • Вопрос задан
  • 543 просмотра
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Добрый день!
Могу предположить проблемы в самом файле manifest:
В файле MANIFEST.mf или Manifest.txt нет переноса строки. Из-за чего он игнорирует ваш файл. Убедиться в этом можно, если открыть jar каким-нибудь архиватором и заглянуть в директорию MANIFEST/MANIFEST.mf
Вот, простой рабочий пример:

Структура директорий и файлов:
folder/package1/Dime2.java
folder/package1/Dime2.class
folder/MANIFEST.mf


Выполненные команды:
Компилируем в байт-код
javac Dime2.java

Создаем архив
jar cfm dime.jar MANIFEST.mf package1/*.class

Содержимое файла MANIFEST.mf (не забываем про перенос строки)
Main-Class: package1.Dime2

Содержимое файла Dime2.jar
package package1;

public class Dime2{
    public static void main(String [] args){
        try{
            System.out.println("Hello world");
            Thread.sleep(10000);
        } catch(Exception exc){}
    }
}


P.S. Обратите внимание на некоторых ОС необходимо дать права на запуск jar файла.
Например, в linux
chmod a+x dime.jar

Ну и запускаем jar'ник
java -jar dime.jar

P.S. В примере я показал MANIFEST.mf, но без разницы. Можно и txt использовать
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы