Kon hoofdklasse niet vinden of laden met een Jar-bestand

Ik probeer een pot te laden met

@echo off
java -jar Test.jar
pause

Met het manifest van

Manifest-Version: 1.0
Main-Class: classes.TestClass

In de Jar-directory kan ik duidelijk een klassen\TestClass-bestand zien wanneer ik het uitpak.

Bewerken: classes.TestClassheeft wel een public static void main(String[] args).

Pakketvertraging in classes.TestClassis package classes;

Maar ik krijg nog steeds de foutmelding

Could not find or load main class classes.TestClass

Ik heb alles meegemaakt wat ik met dit probleem heb kunnen vinden, en niets lijkt te helpen.

Ik heb geprobeerd het klassenpad te bewerken, het manifest opnieuw te doen en de nieuwe JRE te installeren.

Wat moet ik nog meer doen?


Antwoord 1, autoriteit 100%

Ik heb het als volgt laten werken:

TestClass.Java

package classes;
public class TestClass {
    public static void main(String[] args) {
        System.out.println("Test");
    }
}

Gebruik javacop de opdrachtregel om TestClass.classte produceren. Zet TestClass.classin een map classes/.

MANIFEST.MF

Manifest-Version: 1.0
Main-Class: classes.TestClass

Rennen dan

jar cfm test.jar MANIFEST.MF classes/

Voer het dan als

java -jar test.jar

2, Autoriteit 62%

Java -CP “Full-Path-of-Your-Jar” Hoofd

Om een ​​andere klasse te gebruiken met “openbare statische void hoofd” in een pakket,

Java -CP “Full-Path-of-Your-Jar” -pakket1.package2.packages-hiërarchie.classhavingmain


3, Autoriteit 45%

Deze fout komt zelfs als u “-” per ongeluk mist vóór het woord JAR

verkeerde opdracht
java jar test.jar

correcte commando
java -jar test.jar


4, Autoriteit 38%

1.Create een tekstbestand roept manifest.txt en geef de waarde als

Hoofdklasse: klassen.testclass

2.Create de pot als

JAR CFM Test.Jar Manifest.txt Classes / *. Klasse

3.Run de pot als

Java -jar Test.Jar


5, Autoriteit 10%

Dit is erg moeilijk om zonder volledige informatie te debuggen.

De twee meest waarschijnlijke dingen op dit punt zijn dat het bestand in de pot niet in een map binnen de pot wordt opgeslagen, of dat het niet het juiste bestand is.

U moet testclass.class opslaan – sommige mensen nieuw in deze winkel het bronbestand, testclass.java.

En u moet het JAR-bestand maken, zodat testclass.class verschijnt met een pad van de lessen. Zorg ervoor dat het geen “/ klassen” is. Gebruik ritssluiting om naar het bestand te kijken en zorg ervoor dat het een pad van “klassen” heeft.


6, Autoriteit 7%

Ik had een soortgelijk probleem dat ik kon oplossen door execute-privilege voor alle bovenliggende mappen te verlenen waarin het JAR-bestand zich bevindt (op een Linux-systeem).

Voorbeeld:

/Folder1/Folder2/Folder3/Exconsable.Jar

Alle 3 mappen (map1, map2 en map3) evenals het uitvoerbare bestand. Jjar heeft voor de huidige gebruiker execute-privilege nodig, anders kon de fout “de hoofdklasse” niet vinden of laden … “wordt geretourneerd.


7, Autoriteit 7%

Ik had een raar probleem wanneer een onjuiste invoer in manifest.mf veroorzaakte laadstoring. Dit was toen ik probeerde een heel eenvoudig Scala-programma te starten:

Onjuist:

Main-Class: jarek.ResourceCache
Class-Path: D:/lang/scala/lib/scala-library.jar

correct:

Main-Class: jarek.ResourceCache
Class-Path: file:///D:/lang/scala/lib/scala-library.jar

Met een onjuiste versie kreeg ik een cryptisch bericht, hetzelfde de OP. Waarschijnlijk moet het iets zeggen als misvormde URL-uitzondering tijdens het parseren van manifestbestand .

Een absoluut pad gebruiken in het manifest-bestand is wat Intellij gebruikt om een ​​langklasspad voor een programma te bieden.


8, Autoriteit 3%

Tenminste de manier die ik heb gedaan, is als volgt:

Als u een geneste SRC-boom hebt (zeg COM.TEST.MYCLASS.MYCLASS) en u compileert in een root-map die u moet doen:

1) Wanneer u de pot maakt (zet dit meestal in een script):
jar -cvfm my.jar com / test / myclass / manifest.txt com / test / myclass / myclass.class

2) Het manifest moet eruit zien:

mainfest-versie: 1.0
Hoofdklasse: com.test.myclass.mycass
Klasse-pad :. my.jar

3) Nu kun je de pot vanaf elke locatie als volgt uitvoeren:

java -jar mijn.jar

Ik hoop dat dit iemand helpt


Antwoord 9, autoriteit 3%

Ik volg de volgende instructie om een uitvoerbare .jar in Eclipse te maken. Voer vervolgens het commando “java -jar .jar” uit om het programma te starten.

Het zorgt voor het maken van mainfest en het opnemen van hoofdklasse- en bibliotheekbestandsdelen voor je.

http: //java67.blogspot.com/2014/04/how-to-make-executable-jar-file-in-Java-Eclipse.html


Antwoord 10, autoriteit 3%

Ik kreeg deze fout omdat ik een verkeerd klassenpad heb geschreven in mijn MANIFEST.MF


Antwoord 11, autoriteit 3%

Als je pakketnamen gebruikt, werkt het niet met mappen die punten bevatten (Error: Could not find or load main class). Ook al compileert en maakt het het jar-bestand met succes.

In plaats daarvan is een volledige mappenhiërarchie vereist.

Mislukt:

com.example.mypackage/
    Main.java

Werkt:

com/
    example/
        mypackage/
            Main.java

Om in Linux te compileren:

javac `find com/ -name '*.java'` \
&& jar cfe app.jar com.example.mypackage.Main `find com/ -name '*.class'`


Antwoord 12, autoriteit 3%

in IntelliJ krijg ik deze foutmelding wanneer ik probeer de lib-map uit de hoofdprojectmap toe te voegen aan een artefact.

Het plaatsen en gebruiken van de lib-map in de src-map werkt.


Antwoord 13, autoriteit 3%

Een mogelijke reden voor deze foutmelding:

Kan hoofdklasse niet vinden of laden

is wanneer de hoofdklasse (of implementeert) een andere klasse (of interface) uitstrekken, die niet op het klassenpad staat.


14

Ik had deze fout omdat ik jar-bestanden uit bibliotheken naar de doelpot van IntellIdeia heb geëxtraheer. Wanneer ik een andere optie kies “Kopiëren naar de uitvoermap …”, loste het het probleem op. Ik hoop dat dit je helpt


15

Ik kreeg deze fout omdat mijn hoofdklasse zich in test pakket bevindt en ik maak artefact met intellij. Nadat ik de doos heb gecontroleerd, inclusief tests bij het maken van artefact, werd het opgelost.

screenshot van Intellij weergegeven: controlebox


16

Kon soms de onderstaande regel missen onder <build>tag in POM.XML bij het verpakken via Maven. Sinds SRC Map bevat uw Java-bestanden

<sourceDirectory>src</sourceDirectory>

Other episodes