V projektu Java obsahuje každý spustitelný soubor jar hlavní metodu. Obvykle je umístěn na začátku aplikace. Abychom mohli spustit hlavní metodu pomocí samospouštěcího souboru jar, musíme mít správný soubor manifestu a zabalit jej do našeho projektu na správném místě. Tyto soubory mají atribut main manifest, který se používá k definování cesty ke třídě s hlavní metodou.
Někdy máme samospustitelný jar a když se pokusíme spustit projekt, zobrazí se následující chybová zpráva:
Unable to execute jar- file: 'no main manifest attribute.'
Výše uvedená chybová zpráva je vyvolána z důvodu chybějící položky Main-Class v souboru MANIFEST.MF.
S tímto problémem se můžete setkat v jakékoli konfiguraci Jáva projekt. Pojďme diskutovat o jeho řešeních:
Řešení:
Pojďme pochopit jeho řešení v různých projektech:
Maven
v Maven Projekt, tento problém může nastat kvůli chybějící položce Main-Class v souboru MANIFEST.MF. Abychom tento problém vyřešili, můžeme jej definovat v našem souboru pom.xml ručním vložením a maven-jar-plugin v pom.xml.
org.apache.maven.plugins maven-jar-plugin 3.1.0 com.javatpoint.AppMain
Ve výše uvedeném kódu je com.javatpoint.AppMain náš plně kvalifikovaný název hlavní třídy. Musíte nahradit plně kvalifikovaný název podle vaší třídy. Chcete-li zkopírovat plně kvalifikovaný název, klepněte pravým tlačítkem myši na balíček obsahující hlavní třídu a vyberte Zkopírujte plně kvalifikovaný název .
Gradle
Pokud se vám tato chyba zobrazuje ve vašem projektu Gradle, můžete to vyřešit vložením následujících položek do vašeho projektu build.gradle soubor:
plugins { id 'java' } jar { manifest { attributes( 'Main-Class': 'com.javatpoint.AppMain' ) } }
Aplikace Spring Boot
Někdy se tato chyba může vyskytnout ve vašem Jarní bota projekt. Tuto chybu je snadné vyřešit v projektu Spring Boot. Chcete-li tuto chybu opravit v projektu SB, vložte závislost maven-plugin pod značku v souboru pom.xml.
org.springframework.boot spring-boot-maven-plugin 4.0.1
Kořenová příčina chyby bez hlavního manifestu atributu
Chyba 'žádná hlavní manifestační chyba' je obvykle způsobena tím, že jste se dostali do souboru MANIFEST.MF umístěného ve složce META-INF. Ve výchozím nastavení má následující položku:
Manifest-Version: 1.0 Built-By: alien Build-Jdk: 1.8.0 Created-By: Maven Integration for Eclipse
Kde,
Manifest-verze je verze souboru Manifest.
Postaven je název vašeho PC.
Build-Jdk je verze JDK nainstalovaná ve vašem počítači.
Vytvořil je název pluginu používaný v IDE.
Když projekt spustíme, bude hledat Main-Class v souboru MANIFEST.MF. Pokud záznam nenajde, zobrazí chybovou zprávu „Nelze spustit soubor jar“. Když spustíme výše uvedená řešení, položka třídy se automaticky aktualizuje v souboru Manifest projektu takto:
Manifest-Version: 1.0 Built-By: alien Build-Jdk: 1.8.0 Created-By: Maven Integration for Eclipse Main-Class: com.javatpoint.AppMain