Java >> Java tutorial >  >> Tag >> java.io

Opdaterer jar-manifestfil - java.io.IOException:ugyldigt manifestformat

Som manifest-fil er indeholdt i META-INF-undermappen til jar-filen under navnet MANIFEST.MF . Når du opretter en jar-fil til kommandoprompt med kommandoenjar cvf Jarfilename FilesToadd Derefter oprettes en standard manifestfil. Man kan se denne fil og få en idé om gyldig Manifestfil. For at udtrække manifestfil fra jar, skriv følgende kommando i cmdjar xvf Jarfilename nu vil en META-INF undermappe dukke op i basismappen. Herfra kan du se standard manifestfilen. Nogle gange får vi under opdatering af manifestfilen java.io.IOException:ugyldigt manifestformat .Denne fejl kommer af følgende årsager:

1. Du har muligvis ikke efterladt mellemrum mellem navnet og værdien af ​​nogen sektion i manifestfilen,
som Version:1.1 er ugyldig sektion, skriv i stedet Version:1.1 det mellemrum mellem kolon og 1.1 betyder virkelig meget.

2. Mens du angiver hovedklassen, har du muligvis tilføjet .class-udvidelsen i slutningen af ​​klassenavnet. Angiv blot hovedklassen ved at skrive Hovedklasse:Klassenavn .

3.Du har muligvis ikke tilføjet en ny linje i slutningen af ​​filen. Du behøver ikke at skrive \n for at angive ny linje, i stedet skal du bare lade den sidste linje i din manifestfil være tom, som tjener formålet

4.Din tekstfil til manifest skal bruge UTF-8 kodning ellers kan du få nogle problemer.

Til sidst giver jeg et eksempel på, hvordan en manifestfil skal se ud. Her er pakken lommeregner, og hovedklassen er Calculator.java

Manifest-version:2.1

Oprettet af:UselessCoder

Pakkenavn:lommeregner

Klassenavn:calculator.Calculator.java

Hovedklasse:lommeregner. Lommeregner


De links, der blev tilbudt af Peter, var delvist nyttige. Jeg var dog i stand til at løse dette mere eller mindre ved at prøve og fejle. Oracle-dokumenterne, der forklarer, hvordan man gør dette, kræver en masse arbejde. De mangler et godt eksempel på, hvordan man kommer videre. Anyway, for dem, der løber ind i de samme problemer, her er hvad jeg gjorde. Jeg oprettede en tekstfil (f.eks. "Manifest.txt") ved hjælp af Notesblok, der indeholder de manifestattributter, jeg ønskede at tilføje/opdatere. Ved oprettelsen af ​​denne fil sørgede jeg for at tilføje et nyt linjetegn til den sidste linje ved at trykke på tasten på tastaturet. Dernæst oprettede jeg en DOS bat-fil for at udføre den faktiske ændring. Sådan så det ud...

echo Updating manifest permissions...
"C:\Program Files\Java\jdk1.7.0_25\bin\jar" -umf "c:\some folder\Manifest.txt" "C:\some folder\jartoupdate.jar"

Rækkefølgen af ​​jar-argumenterne, når de relaterer til de faktiske stier, der følger på kommandolinjen, er vigtig. Linkene fra Peters svar pegede på den del.


Java tag