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.TestClass
heeft wel een public static void main(String[] args)
.
Pakketvertraging in classes.TestClass
is 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 javac
op de opdrachtregel om TestClass.class
te produceren. Zet TestClass.class
in 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>