Anfängerfrage HelloWorld? cmd-Problem

JeffreyD

Mitglied
So, ich hatte jetzt endlich vor meine ersten Schritte in Java zu machen (ohne Vorkenntnise in einer anderen Sprache) was auch meinen Anfang als "Programmierer" darstellt..
Ich verfahre nach dem Buch "Java als erste Programmiersprache "das ich mir online als PDF geladen habe.. ich habe jetzt ein Problem, ich habe (denke ich mal richtig) die Umgebungsvariable gesetzt , und (als txt aber mit endung .java) mit dem Editor von Windows (Vista) folgende Datei erstellt: HelloWorld.java, mit folgendem Text:

public class HelloWorld
{
public static void main (String[] args)
{
System.out.println ("Hello, world!");
}
}

Wenn ich jetzt bei cmd.exe eingebe: javac HelloWorld.java, kommt folgendes:

javac:not a file: HelloWorld.java
Usage: javac <options> <source files>

Hat jemand ne Idee wie ich das ändern kann?
 
Arbeitest du zufällig nicht unter Windows? Bei den meisten anderen Betriebssystemen müsste man das mit javac ./HelloWorld.java aufrufen.
Ob es an der Umgebungsvariable liegt, kannst du auch leicht prüfen: einfach die Datei in dein jdk-verzeichnis verschieben (gleicher ordner wie javac.exe) und das ganze von dort aus starten. (dürfte aber nicht der Fall sein).
 
Ne wenn ich das in den Ordner verschiebe ist es auch nicht besser, also liegts nicht daran, was kann sonst noch falsch sein.. muss ich das nicht als txt öffnen oder mit einem anderen Editor?

(hey ein Dexter-Fan, sehr gut!)
 
Du musst dich entweder im Verzeichnis befinden wo sich die Datei befindet oder die Datei über den vollen Namen aufrufen.

Also z.B.:

C:\Java Dateien> javac HelloWorld.java

oder

C:\> javac c:\Java Datein\HelloWorld.java
 
man kann sich auch bei komplexen und somit nervigen verzeichnissen bei der HelloWorld.java eine test.bat erstellen und in die schreiben:
cmd

Dann kann man über die bat ziemlich einfach eine konsole mit dem passenden Verzeichnis öffnen.
 
Naja erst hab ich auf dem Desktop mit Rechstklick eine txt Datei geöffnet und da den oben bereits hingeschriebenen text reingeschrieben (mit Notepad auf WinVista)und die Datei "HelloWorld.java" genannt und dann ein CMD Fenster in den Ordner getan mit dem ich die Eingabe mache die ich oben geschrieben habe und immer wieder kommt die gleiche Fehlermeldung, aber alles ist 1:1 so wie im Buch..
 
Wenn die Datei komplett fehlt, gibt es "file not found"
Ich hab es geschafft deine Fehlermeldung so zu reproduzieren:
-> HelloWorld.java ist ein Ordner und schon gibt es "not a file".

Hast du eventuell irgendwo so einen Ordner an ungünstiger Stelle ?
 
Systemsteuerung -> Ordneroptionen suchen -> Reiter "Ansicht" -> Haken weg bei "Erweiterungen bei bekannten ..." weg.

Allerdings gibt es in dem Fall einer HelloWorld.java.txt ein file not found.
not a file sagt ja aus: "Ich finde was, aber das ist keine Datei".

Jedenfalls sollte es so sein.
 
oh man wenn ich jetzt eingebe: java HelloWorld
sollte eigentlich das ergebniss kommen, nämlich "Hello, World !" als "Antwort" aber es kommt wieder ein Fehler: Exception in thread "main" java.lang.NoSuchmethodError: main
 
oh tut mir leid war sehr ungenau..

also ich habe jetzt mit dem befehl in cmd:"javac HelloWorld.java" eine HelloWorld.class Datei zusätzlich angelegt und wenn ich jetzt eingebe: "java HelloWorld" müsste im cmd Fenster in einer neuen Zeile stehen: Hello, World!
tut es aber nicht, ich kriege nur diese Fehlermeldung, ich denke es liegt daran das er die class oder so nicht finden kann, nach etwas googeln hab ich bis jetzt herausgefunden das man was an der Umgebungvariablen CLASSPATH ändern sollte, kann mir da jemand weiterhelfen?
 
im Idealfall diese Umgebungsvariable komplett entfernen,
ansonsten wenigstens dafür sorgen, dass das aktuelle Verzeichnis immer berücksichtigt wird:
CLASSPATH=.;C\blahblah;C\blahblah2
den Punkt und Semikolon am Anfang beachten

nach Umgebungsvariablen-Änderungen immer eine neue Konsole aufmachen, bei alten bewirkt das nichts,

man kann für den java-Befehl auch aktuell den ClassPath angeben und so Umgebungvariablen überdecken:
java -cp . HelloWorld


> oh tut mir leid war sehr ungenau..

gar nicht mal, den genauen Befehl + die Fehlermeldung hattest du im vorherigen Posting auch schon genannt,
dass es das gleiche Verzeichnis ist und die Klasse kompiliert gewesen sein sollte, durfte man annehmen
 
Zuletzt bearbeitet von einem Moderator:
okay ändert sich immer noch nichts (trotzdem danke für die tipps)

ich habe jetzt in der umgebungsvariablen stehen:
Name der Variablen: CLASSPATH
Wert der Variablen: .;C:\Program Files\Java\jdk1.6.0_23\lib (hab da schon verschiedenstes ausprobiert)

bis jetzt immer wieder die gleich fehlermeldung..
 
was kommt bei
java Helloxy
als Fehlermeldung? kann grad nicht testen,
müsste es bei fehlender Klasse nicht 'No Class Definition Found' oder ähnliches sein?
im Internet finden sich beide Varianten,

wenn die Klasse gefunden wird, dann ist entscheidend dass sie public ist, genau wie die Datei heißt, dass
> public static void main(String[] args)
genau eingehalten ist, nach deinem ersten Posting sollte alles so sein,
sicher dass du nicht alte Versionen des Codes irgendwann mal kompiliert hast oder so?

kopiere die Datei testweise zu H.java, nenne die Klasse darin H, main-Methode kontrollieren, geht kompilieren, geht dann ausführen?
Klasse hier posten, evtl. Screenshot vom geöffeneten Editor, daneben die Konsole mit ausgeführten dir
und ausgeführten java -cp . H-Befehl,
Screenshots kann man hier direkt an Postings anfügen,

alles Strohhalm-Tipps, richtig Sinn macht das nicht
 
Zuletzt bearbeitet von einem Moderator:
ja natürlich, hab ich gemacht..hat leider nichts gebracht..liegt aber nicht an meiner Datei, hab das auch schon mit anderen Dateien aus den Java-Examples gemacht, kompilieren geht, ausführen nicht , es ist immer der gleiche Fehler
 
Zuletzt bearbeitet:
zum Ausschluss aller halbwegs denkbaren bekannten Fehler (.class-Datei kann nicht überschrieben werden, wird aus anderem Verzeichnis bevorzugt geladen usw.)
musst du jetzt erneut die Klasse wechseln, z.B. H2, neue Java-Datei, diesmal von Anfang an Methode richtig schreiben (!),
nur einmal kompilieren usw.,

dass du den Namen der Methode falsch geschrieben hast, nachdem extra überall drauf hingewiesen wird, gibt ja zu denken,
wer weiß ob es aktuell in H richtig ist und nicht mani oder so heißt..,

die unterschiedlichen Fehlermeldungen aus den zwei Screenshots belegen immerhin recht deutlich, dass die Klasse oder zumindest die .class-Datei(en) doch gefunden werden,
es ist also im wesentlichen der Fehler der auch benannt wird: die Methode main muss genau stimmen,

aber so richtig falsch kann man das eigentlich gar nicht machen, selbst per Zufall müsste doch inzwischen irgendwann mal eine richtige Konstellation dabei sein,
die wirkliche Fehlerursache liegt wohl immer noch im Dunkeln..

edit: dem obigen ersten Screenshot nach bist du in einem Verzeichnis, das H.Java heißt?!
weiß nicht ob das stören kann, aber solche Spielereien bitte unterlassen,
Desktop, Eigene Dateien, Programme oder ähnlich Windows-kontrolliertes sind auch verdächtig,

nur c:\temp oder ähnlich kurzes sind sinnvolle Testverzeichnisse
 
Zuletzt bearbeitet von einem Moderator:
statt Wordpad ruhig auch mal den schlichten Windows-Editor testen, falls noch vorhanden,
wegen Zeilenumbruch oder wer weiß was da noch alles störend in die Datei kommen kann,
obwohl javac ja funktioniert,

und immer dann neue Datei, neue Klasse usw.,
notfalls Eclipse installieren..
 
dir war natürlich irreführend.

Als System-Variable sollte nur die Variable Path so erweitert werden, das lediglich ein
;C:\Program Files\Java\jdk1.6.0_23\bin
angehängt wird. Andere sollte es nicht geben.

bin ist das Verzeichnis, das ausführbare Tools des JDK enthält (.EXE)

cmd.exe ist ein Windows-Programm, dass die textuelle Ein- und Ausgabe simuliert.

Alle programme lauten meist so:

Java:
public class Klasse {

public static void main(String[] args) {

  System.out.println("Hello world!");

}

}

Weiß man zunächst nichts damit anzufangen, schreibt man es einfach ab.

Textdateien, die Java-Code beinhalten, müssen immer die Endung .java haben, und so heißen, wie die darin enthaltene Klasse.

Mittels des Compilers javac wird eine solche Quelltextdatei in eine .class-Datei übersetzt, die dann von der JVM auf jeder Maschine ausgeführt werden kann - das Programm wird gestartet
Eine .class-Datei heißt auch Binärcodedatei.

Um das kompilieren zu veranlassen, kann man mit cd in verschieden Verzeichnisse wechseln, in denen die .java files liegen usw.

Das alles wird in jeden Buch über Java an Anfang erwähnt..
 
man kann sich auch bei komplexen und somit nervigen verzeichnissen bei der HelloWorld.java eine test.bat erstellen und in die schreiben:
cmd

Dann kann man über die bat ziemlich einfach eine konsole mit dem passenden Verzeichnis öffnen.
mhnn... nein bei komplexen nervigen verzeichnissen würde ich einfach eine IDE verwenden!
 
so hab java komplett deinstallier extra aus der registry entfernt, alle umgebungsvariablen gelöscht und danach alles komplett neu gemacht jetzt klappt's, "Programm" HelloWorld funktioniert..thx an alle die mir geholfen haben
 

Neue Themen


Zurück
Oben