Corrupt jar-bestand

Ik heb een jar-bestand gemaakt in Windows 7 met eclipse. Als ik het jar-bestand probeer te openen, staat er ongeldig of beschadigd jar-bestand. Kan iemand mij vertellen waarom het jar-bestand ongeldig is?


Antwoord 1, autoriteit 100%

Dit gebeurt wanneer u dubbelklikt op een JAR-bestand in Windows Verkenner, maar de JAR is op zichzelf geen uitvoerbareJAR. Een echte uitvoerbare JAR moet op zijn minst een klasse hebben met een main()-methode en waarnaar wordt verwezen in MANIFEST.MF.

In Eclipe moet u het project exporteren als Uitvoerbaar JAR-bestandin plaats van als JAR-bestandom een echt uitvoerbare JAR te krijgen.

Of, als je JAR alleen een container is van een aantal nauw verwante klassen (een bibliotheek), dan moet je er niet op dubbelklikken, maar hem openen met een ZIP-tool. Windows verkenner associeert namelijk standaard JAR-bestanden met java.exe, wat niet werkt voor dat soort bibliotheek-JAR’s.


Antwoord 2, autoriteit 38%

Dit gebeurt regelmatig wanneer u de extensie op de JAR voor ZIP wijzigt, de zip-inhoud uitpakt en enkele wijzigingen aanbrengt in bestanden, zoals het wijzigen van het MANIFEST.MF-bestand, wat een veel voorkomend geval is, vaak genereert Eclipse de MANIFEST-bestand zoals we willen, of misschien willen we de CLASS-PATH of de MAIN-CLASS-waarden ervan wijzigen.

Het probleem doet zich voor wanneer u de map terug zipt.

Een geldige Runnable/Executable JAR heeft de volgende structuur:

myJAR (Main-Directory)
    |-META-INF (Mandatory)
             |-MANIFEST.MF (Mandatory Main-class: com.MainClass)
    |-com 
         |-MainClass.class (must to implement the main method, mandatory)
    |-properties files (optional)
    |-etc (optional)

Als je JAR aan deze regels voldoet, zal het werken, het maakt niet uit of je het handmatig bouwt met een ZIP-tool en vervolgens de extensie terug naar .jar hebt gewijzigd

Als je klaar bent, probeer het dan uit te voeren op de opdrachtregel met:

java -jar myJAR.jar 

Als u een zip-tool gebruikt om uit te pakken, bestanden te wijzigen en opnieuw te zippen, verandert normaal gesproken de JAR-structuur in deze structuur, wat onjuist is, aangezien er een ander mapniveau wordt toegevoegd aan de bovenkant van het bestandssysteem, waardoor het een beschadigd bestand wordt zoals het is hieronder weergegeven:

**myJAR (Main-Directory)
    |-myJAR (creates another directory making the file corrupted)**
          |-META-INF (Mandatory)
                   |-MANIFEST.MF (Mandatory Main-class: com.MainClass)
          |-com 
              |-MainClass.class (must to implement the main method, mandatory)
          |-properties files (optional)
          |-etc (optional)

🙂


Antwoord 3, autoriteit 21%

Het probleem kan zijn dat er meer dan 65536 bestanden in uw JAR staan: Waarom klaagt Java over jar-bestanden met veel vermeldingen?De oplossing wordt beschreven in het antwoord.


Antwoord 4, autoriteit 19%

Kan komen door een probleem met MANIFEST.MF. Probeer de hoofdklasse te starten met het volgende commando als je het pakket kent waar de hoofdklasse zich bevindt.

java -cp launcher/target/usergrid-launcher-1.0-SNAPSHOT.jar co.pseudononymous.Server

Antwoord 5, autoriteit 6%

Dit is het veelvoorkomende probleem met “manifest” in de fout? Ja, het gebeurt veel, hier is een link: http: //dev-answers.blogspot.com/2006/07/invalid-or-corrupt-jarfile.html

Oplossing:

Als u de ant-taak gebruikt om het manifestbestand on-the-fly te maken, krijgt u toegang tot het volgende:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.2
Created-By: 1.4.2_07-b05 (Sun Microsystems Inc.)
Main-Class: com.example.MyMainClass

Zelf het manifestbestand maken, met de essentiële dingen, lost het probleem op:

Manifest-Version: 1.0
Main-Class: com.example.MyMainClass

Met meer onderzoek weet ik zeker dat ik het maken van dynamische metabestanden met Ant had kunnen laten werken, zoals ik weet dat andere mensen dat doen – er moet een eigenaardigheid zijn in de combinatie van mijn ant-versie (1.6.2), java-versie (1.4.2_07) en misschien de huidige maanfase.

Opmerkingen:

Het ontleden van het Meta-inf-bestand is een probleem dat naar voren is gekomen, is opgelost en vervolgens weer opdook voor sun. Zie: Bug-ID: 4991229. Als je kunt achterhalen of deze bug bestaat in jouw (of mijn) versie van de Java SE, heb je meer geduld dan ik.


Antwoord 6, autoriteit 4%

Zorg er ook voor dat de Java-versie die tijdens runtime wordt gebruikt, een equivalente of latere versie is dan de Java-versie die tijdens de compilatie wordt gebruikt


Antwoord 7, autoriteit 2%

Zoals ik net dit onderwerp tegenkwam, wilde ik de reden en oplossing delen waarom ik het bericht heb “ongeldig of corrupt jarfile”:

Ik had de versie van de “Maven-Jar-Plugin” in mijn POM.XML bijgewerkt van 2.1 tot 3.1.2.
Alles ging nog steeds goed en er is een JAR-bestand gebouwd. Maar op de een of andere manier zou het duidelijk niet meer rennen.

Zodra ik de “Maven-Jar-Plugin” -versie weer instelt, is het probleem weer weg.


8

Het kan een typo int de MANIFEST.MFook, p.ex. Build-date met twee :

 Build-Date:: 2017-03-13 16:07:12

9

Probeer gebruik te maken van de opdracht JAR -XVF FileName.jar en exporteer vervolgens de inhoud van het gedecomprimeerde bestand naar een nieuw Java-project in Eclipse.


Antwoord 10

Misschien was dit gewoon een toevalstreffer, maar de enige keer dat ik deze fout had, moest ik gewoon alle javaw.exe-processen die op de achtergrond draaiden, uitschakelen. De uitvoerbare JAR werkte daarna.


Antwoord 11

Het kan zoiets doms zijn als je het bestand via FTP naar een doelmachine overbrengt, je gaat en voert het .JAR-bestand uit, maar dit was zo groot dat het nog niet klaar is met overbrengen 🙂 Ja, het is mij overkomen ..

Other episodes