2017-08-12 2 views
-2

nicht finden oder laden Ich habe eine Klasse mit der Hauptmethode. Wenn ich die Windows-Befehlszeile verwende, um die Hauptmethode der Klasse auszuführen, funktioniert der Kompilierungsvorgang mit dem Befehl "javac" (aktueller Speicherort für die Befehlszeile - Verzeichnis mit dieser Klasse). Datei namens "Card.class" wird fast in "Card.java" -Datei erstellt. Aber der Befehl "Java Card" gibt einen Fehler mit der Beschreibung "Hauptklasse nicht finden oder laden" zurück. In Intellij Idea funktioniert diese Methode innerhalb der Klasse ganz gut.Java-Konsolenfehler konnte Hauptklasse

was ich versucht habe zu tun, um das Problem (einige löst von Stackoverflow Themen genommen wurden) zu lösen:

1) Volle Neuinstallation von JDK und JRE.

2) umschrieb alle meine Umgebungsvariablen:

JAVA_HOME = C: \ Programme \ Java \

jdk1.8.0_144

JDK_HOME =% JAVA_HOME%

PATH = C: \ Program Files \ Java \ jdk1.8.0_144 \ bin

CLASSPATH =% JAVA_HOME% \ lib \ dt.jar;% JAVA_HOME% \ jre \ lib \ tools.jar

3) I verschiedene Varianten für die „CLASSPA versucht TH "Umgebungsvariable. Außerdem habe ich das manuell geschrieben: "java -classpath" $ s "Card", wobei der Wert für den Parameter "-classpath" aus dem Befehl Intellij Idea kopiert wurde, der nach dem Ausführen des Programms in der IDE zurückgegeben wurde.

4) Einige Variationen für Klassennamen im Befehl (von nur "Java Card" bis "java package_name.Card" im Quellprojektverzeichnis). Alle diese Variationen wurden von der Befehlszeile erkannt und ergaben denselben Fehler.

Ich denke, dass das Problem mit der Variable "Classpath", aber alle Lösungen, die ich gefunden habe vorschlagen unterschiedliche Werte für diese Variable, und einer von ihnen hatte gearbeitet. Der letzte aktualisierte Wert der Variablen wird zuvor erwähnt.

Hier ist meine Klasse (möglich, dass das Problem hier ist):

package cards; 

public class Card { 

    //Constants, constructor, getters, setters, validation checking methods 

    public static void main(String[] args) { 

     // Just to see in the command line that the method was invoked 
     System.out.println("WORK"); 

     // "assert" checks for constants values 

    } 
} 

Stacktrace für meine Fehler:

myPathToTheProject \ src \ Karten> Java Card

Fehler: nicht finden konnte oder laden Hauptklasse Karte

+0

Bitte formatieren Sie Ihren Code so, dass er leichter zu lesen ist. – UmarZaii

+0

Ich habe diesen Befehl zuvor ausprobiert, als sich der "Standort" der Befehlszeile im Quellordner des Projekts (src) befand: "java cards.Card". Es hat nicht funktioniert. Aber es tat, als ich die -cp als den Befehlsparameter manuell hinzufügte. Also, Tuyen Nguyens Lösung hatte wirklich geholfen.Das stimmt nicht mit meiner CLASSPATH-Umgebungsvariablen, und es ist offensichtlich möglich, dass andere Personen dies tun. Ähnliche Frage hier: https://stackoverflow.com/questions/18093928/what-does-could-not-find-or-load-main-class-mean?rq=1, und die beste Antwort (plus zwei oben abgestimmt) beschreibt eine andere Lösung dafür. –

+0

über "einfache Tippfehler": http://screenshot.su/show.php?img=1cf41c141fdc9bd60056965b7ba6793f.jpg –

Antwort

-1

Lassen Sie uns set classpath korrekt vor Lauf haben. Das funktioniert gut für mich: java -cp ./ Card oder java -cp . Card. Der Teil: -cp . oder -cp ./ dient zum Festlegen des Klassenpfads zum aktuellen Ordner.

0

Öffnen Sie das CMD an der Stelle, an der Sie die Card.class

haben
set CLASSPATH="" 
java Card 

Ich nehme an, Sie nicht Paket Verzögerung auf Card.java

+0

naa, der gleiche Fehler zeigt sich. –

+0

Auch der Code, den Sie gepostet haben, enthält keine Paketdeklaration, das Problem ist sehr ähnlich. Wenn Sie eine Paketverzögerung haben, sagen Sie "Paketkarten" in Ihrer Klasse, können Sie es wie javac Card.java ohne ein Problem kompilieren. Aber wenn Sie versuchen, es auszuführen, wird es die Ausnahme "main not found" werfen, Sie müssen eine Ebene höher gehen und "java card.Card" ausführen. Keine Ahnung, was sonst noch passieren könnte. – Imran

+0

ich müde diese Variationen auch, wie ich in der Frage beschrieben, aber es hat nicht geholfen, ohne Classpath in den Quellordner des Projekts –

Verwandte Themen