V projektu Java vsaka izvršljiva datoteka jar vsebuje glavno metodo. Običajno je postavljen na začetno točko aplikacije. Za izvedbo glavne metode s samoizvršljivo datoteko jar moramo imeti ustrezno datoteko manifesta in jo oviti z našim projektom na ustreznem mestu. Te datoteke imajo atribut glavnega manifesta, ki se uporablja za definiranje poti do razreda, ki ima glavno metodo.
Včasih imamo samoizvršljiv jar in ko poskušamo izvesti projekt, bo izdal naslednje sporočilo o napaki:
Unable to execute jar- file: 'no main manifest attribute.'
Zgornje sporočilo o napaki se prikaže zaradi manjkajočega vnosa glavnega razreda v datoteki MANIFEST.MF.
Na to težavo lahko naletite pri kateri koli konfiguraciji Java projekt. Pogovorimo se o njegovih rešitvah:
rešitev:
Razumejmo njegove rešitve v različnih projektih:
Maven
noter Maven Projekt, do te težave lahko pride zaradi manjkajočega vnosa glavnega razreda v datoteki MANIFEST.MF. Da bi odpravili to težavo, jo lahko definiramo v naši datoteki pom.xml tako, da ročno vstavimo maven-jar-plugin v pom.xml.
org.apache.maven.plugins maven-jar-plugin 3.1.0 com.javatpoint.AppMain
V zgornji kodi je com.javatpoint.AppMain naše popolnoma kvalificirano ime glavnega razreda. Popolnoma kvalificirano ime morate zamenjati glede na vašo razredno pot. Če želite kopirati popolnoma kvalificirano ime, z desno miškino tipko kliknite paket, ki vsebuje glavni razred, in izberite Kopirajte popolnoma kvalificirano ime .
Gradle
Če v projektu Gradle dobivate to napako, lahko to rešite tako, da v svoj build.gradle mapa:
plugins { id 'java' } jar { manifest { attributes( 'Main-Class': 'com.javatpoint.AppMain' ) } }
Aplikacija Spring Boot
Včasih lahko na to napako naletite v vašem Pomladni škorenj projekt. To napako je enostavno odpraviti v projektu Spring Boot. Če želite odpraviti to napako v projektu SB, postavite odvisnost vtičnika maven pod oznako v datoteki pom.xml.
org.springframework.boot spring-boot-maven-plugin 4.0.1
Glavni vzrok napake atributa No Main Manifest
Napaka »ni glavnega manifesta« se običajno pojavi, če ste zamočili datoteko MANIFEST.MF, ki se nahaja v mapi META-INF. Privzeto ima naslednji vnos:
Manifest-Version: 1.0 Built-By: alien Build-Jdk: 1.8.0 Created-By: Maven Integration for Eclipse
Kje,
Različica manifesta je različica datoteke manifesta.
Vgrajeno je ime vašega računalnika.
Build-Jdk je različica JDK, nameščena v vašem računalniku.
Ustvaril je ime vtičnika, ki se uporablja v IDE.
Ko zaženemo projekt, bo poiskal glavni razred v datoteki MANIFEST.MF. Če vnosa ne najde, se prikaže sporočilo o napaki »Datoteke jar ni mogoče izvesti«. Ko zaženemo zgornje rešitve, bo vnos razreda samodejno posodobljen v datoteki manifesta projekta, kot sledi:
Manifest-Version: 1.0 Built-By: alien Build-Jdk: 1.8.0 Created-By: Maven Integration for Eclipse Main-Class: com.javatpoint.AppMain