I ett Java-projekt innehåller varje körbar jar-fil en huvudmetod. Vanligtvis placeras den vid startpunkten för ansökan. För att exekvera en huvudmetod med en självexekverande jar-fil, måste vi ha en korrekt manifestfil och slå in den med vårt projekt på rätt plats. Dessa filer har ett huvudmanifestattribut som används för att definiera sökvägen till klassen som har huvudmetoden.
Ibland har vi en självkörbar burk, och när vi försöker köra projektet kommer det att skicka följande felmeddelande:
Unable to execute jar- file: 'no main manifest attribute.'
Ovanstående felmeddelande visas på grund av att huvudklassen saknas i filen MANIFEST.MF.
Du kan stöta på detta problem i alla konfigurationsbaserade Java projekt. Låt oss diskutera dess lösningar:
Lösning:
Låt oss förstå dess lösningar i olika projekt:
Maven
I Maven Projektet kan det här problemet uppstå på grund av att huvudklassen saknas i filen MANIFEST.MF. För att lösa det här problemet kan vi definiera det i vår pom.xml-fil genom att manuellt sätta a maven-jar-plugin i pom.xml.
org.apache.maven.plugins maven-jar-plugin 3.1.0 com.javatpoint.AppMain
I ovanstående kod är com.javatpoint.AppMain vårt fullt kvalificerade namn på Main-Class. Du måste ersätta det fullständiga namnet enligt din klassväg. För att kopiera det fullständiga namnet högerklickar du på paketet som innehåller huvudklassen och väljer Kopiera fullt kvalificerat namn .
Gradle
Om du får det här felet i ditt Gradle-projekt kan du lösa detta genom att lägga in följande poster i ditt bygga.gradle fil:
plugins { id 'java' } jar { manifest { attributes( 'Main-Class': 'com.javatpoint.AppMain' ) } }
Spring Boot Application
Ibland kan det här felet uppstå i din Fjäderkänga projekt. Det är lätt att lösa detta fel i Spring Boot-projektet. För att fixa detta fel i SB-projektet, lägg maven-plugin-beroendet under taggen i filen pom.xml.
org.springframework.boot spring-boot-maven-plugin 4.0.1
Grundorsaken till felet No Main Manifest Attribute
'Inget huvudmanifestfel' orsakas vanligtvis om du trasslat i MANIFEST.MF-filen som finns under META-INF-mappen. Som standard har den följande post:
Manifest-Version: 1.0 Built-By: alien Build-Jdk: 1.8.0 Created-By: Maven Integration for Eclipse
Var,
Manifest-version är versionen av Manifest-filen.
Byggd av är ditt datornamn.
Bygg-Jdk är JDK-versionen installerad på din maskin.
Skapad av är pluginnamnet som används i IDE.
När vi kör projektet kommer det att leta efter Main-Class i filen MANIFEST.MF. Det kommer att skicka felmeddelandet 'Kan inte köra jar-filen' om den inte hittar posten. När vi kör ovanstående lösningar kommer klassposten automatiskt att uppdateras i projektets Manifest-fil enligt följande:
Manifest-Version: 1.0 Built-By: alien Build-Jdk: 1.8.0 Created-By: Maven Integration for Eclipse Main-Class: com.javatpoint.AppMain