# Javac konnte nicht gefunden werden



## Tien (19. Jul 2004)

Hallo ich habe eine dringende Frage. Ich habe ein Java Buch geholt hab aber Problem den übersetzer zu starten wenn ich in der Zeilen Kommando javac eingebe erschein dann error

_edit deathbyaclown: besserer titel_


----------



## thE_29 (19. Jul 2004)

jo es gibt sicherlich nur 1 error auf der ganzen welt 

wir wärs mit mehr details...


----------



## Jaraz (19. Jul 2004)

Hi,

Typische Anfänger-Fehler

Ein Java-Neuling ("Newbie") fragt: Ich habe das HelloWorld-Programm aus meinem Java-Buch abgeschrieben, aber es funktioniert nicht.

Ein erfahrener Programmierer ("Oldie") antwortet: Das ist schon richtig so, das HelloWorld-Beispiel dient dazu, dass Du die typischen Anfänger-Fehler kennen lernst und in Zukunft vermeiden kannst. Der erste Fehler war schon: Wenn Du uns nicht den genauen Wortlaut der Fehlermeldung, die Version Deiner Java-Software (JDK, IDE) und die relevanten Teile Deines Source-Programms dazu sagst, können wir den Fehler nicht sehen und Dir nicht helfen. In diesem Fall kann ich nur raten. Du hast wahrscheinlich einen der folgenden typischen Newbie-Fehler gemacht:

    * Du hast das Programm nicht genau genug abgeschrieben (Tippfehler, Groß-Kleinschreibung, Sonderzeichen, Leerstellen), lies doch die Fehlermeldungen und Korrekturhinweise, die der Compiler Dir gibt.
    * Du hast das Programm nicht unter dem richtigen Filenamen abgespeichert. Wenn die Klasse HelloWorld heißt, muss das File HelloWorld.java heißen, nicht helloworld.java und auch nicht HelloWorld.java.txt, im letzteren Fall versuch es mit
      notepad "HelloWorld.java"
    * Du hast beim Compiler nicht den kompletten Filenamen mit der Extension angegeben (wieder mit der richtigen Groß-Kleinschreibung):
      javac HelloWorld.java
    * Du hast bei der Ausführung nicht den Klassennamen ohne die Extension angegeben (wieder mit der richtigen Groß-Kleinschreibung):
      java HelloWorld
    * In der Umgebungsvariable PATH ist das Directory, in dem sich die JDK-Software befindet, nicht neben den anderen Software-Directories enthalten, versuch
      set PATH=%PATH%;C:\jdk1.2\bin
      oder wie immer das auf Deinem Rechner heißen muss.
    * Die Umgebungsvariable CLASSPATH ist (auf einen falschen Wert) gesetzt. Diese Variable sollte überhaupt nicht gesetzt sein, nur in seltenen Spezialfällen und dann so, dass sie sowohl die Stellen enthält, wo die Java-Klassenbibliotheken liegen, als auch den Punkt für das jeweils aktuelle Directory.
    * Du hast den Compiler nicht in dem Directory bzw. Folder aufgerufen, in dem Du das Java-File gespeichert hast.
    * Du hast ein Applet als Applikation aufgerufen, oder umgekehrt.
      Applikationen, die eine main-Methode enthalten, musst Du mit
      java Classname
      aufrufen.
      Applets, die ein "extends Applet" oder "extends JApplet" enthalten, musst Du innerhalb eines geeigneten HTML-Files mit
      appletviewer xxxxx.html
      oder mit Netscape oder Internet-Explorer aufrufen. 

Quelle: http://www.boku.ac.at/javaeinf/jein1.html

Gruß Jaraz


----------



## Tien (19. Jul 2004)

es sagt dann der Befehl ist falsch geschrieben oder konnte nicht gefunden werden


----------



## Heiko (19. Jul 2004)

Tien hat gesagt.:
			
		

> es sagt dann der Befehl ist falsch geschrieben oder konnte nicht gefunden werden



Kopier doch einfach die Fehlermeldung rein, dann können wir besser sehen worum es geht.


----------



## bygones (19. Jul 2004)

Tien hat gesagt.:
			
		

> es sagt dann der Befehl ist falsch geschrieben oder konnte nicht gefunden werden


hast du Java installiert ? ist Java im CLASSPATH ?
schau mal hier: http://www.java-forum.org/de/viewtopic.php?t=6424


----------



## Tien (19. Jul 2004)

es sagt dann der Befehl ist falsch geschrieben oder konnte nicht gefunden werden


----------



## Tien (19. Jul 2004)

Wie kann ich denn den Class path setzen?


----------



## Tien (19. Jul 2004)

ich habe jdk 1.1.4 installiert


----------



## thE_29 (19. Jul 2004)

wahrscheinlich passt der classpath und der path nicht

Rechtsklick auf Arbeitsplatz

Eigenschaften->Erweitert->Umgebungsvariablen

dort stehen sie


----------



## Heiko (19. Jul 2004)

Tien hat gesagt.:
			
		

> ich habe jdk 1.1.4 installiert



Ich weiß ja nicht obs daran liegen kann, aber installier doch mal die neueste Version, die du bei http://www.java.com herunterladen kannst.

Es ist das JDK 1.4.2


----------



## Guest (19. Jul 2004)

Ich habe auch im mein Buch noch ein Programm bekommen j2sdk1.4.0 vielleicht ist da auch der Übesetzer drinne


----------



## Heiko (19. Jul 2004)

Anonymous hat gesagt.:
			
		

> Ich habe auch im mein Buch noch ein Programm bekommen j2sdk1.4.0 vielleicht ist da auch der Übesetzer drinne



Vermutlich.

Deinstalliere die alte und installiere die neue Version.

Kannst uns ja mitteilen, ob es geklappt hat.


----------



## Tien (20. Jul 2004)

Ich glaube ich habs endlich geschaft die paths zu legen aber wenn ich mein progamm Welcome.java. durch denn Befehl javac Welcome.java übersetzen will sagt es error : cannot read: Welcome.java 1error    ist das Normal?


----------



## Isaac (20. Jul 2004)

Natürlich ist das nicht normal. Dann hast du dich vertippt.


----------



## thE_29 (20. Jul 2004)

Ein Error wird beim Erstellen normal sein 
hihi

und poste gefälligst den ganzen Fehler, sodass man dir auch helfen kann und nicht immer 1 Wort!

Zusammenhang + Nachricht, sonst geht gar nix  8)


----------



## needyourhelp (26. Jul 2004)

Hi,

bin neu und hoffe, mich nicht im falschen Forum angemeldet zu haben.  Ich schreibe hier, weil ich das selbe Problem habe. Als frischer Javanovize hab ich mich auch schon gefragt, ob ich nicht zu blöd für Computer bin. Denn im Grunde kann man bei "Hello.java" nichts falsch machen.

Ich benutze den TextPad_Editor und hab folgendes eingegeben:

```
*/ Hello.java */

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

Laut Buch will ich nun die noch nicht gespeicherte Datei(davon steht nix geschrieben) in den Bytcode mittels javac.exe im Verzeichnis d:j2sdk1.4.1_01 compilieren, oder wies heißt.

Da ich keinen Bock hab, jedesmal den vollständigen Pfad im DOS-Prompt einzugeben, hab ich den Rat im Buch befolgt und die Systemumgebungsvariablen "Path" erweitert um:

;PATH=d:\j2sdk1.4.1_01\BIN;%PATH%

Ohne Plan, wie man im einzelnen mit diesen Variablen umgeht und wozu sie im einzelnen gut sind hab, ich mich ans Buch gehalten. Soweit ichs verstehe, soll man damit eben in c:\ das Prog javac.exe in d:\*\bin aufrufen können, ohne den gesamten Pfad schreiben zu müssen. Also der Editor ist offen und die Datei auch nicht abgespeichert, s.
Handbuch der Java-Programmierung von Guido Krüger, 3.Auflage des Addison-Wesley-Verlag ab S. 53.

Folgendes im DOS-Prompt:

*C:\>javac Hello.java
Der Befehl "javac" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.*

OK, irgendwas stimmt nicht mit der Umgebungsvariable, obwohl ichs genau nach Buch gemacht hab.

Also, ersmal weiter mit Wechsel nach d:\j2sdk1.4.1_01\bin und javac Hello.java eingegeben.

*DOS-Prompt: 
D:\j2sdk1.4.1_01\bin> javac Hello.java
error: cannot read: Hello.java
1 error

D:\j2sdk1.4.1_01\bin>*

VERDAMMT!!!

OK, GANZ RUHIG! ICH KANN DAS VERFLUCHTE PROBLEM NICHT SEIN! UND NEIN, ICH BIN NICHT BLÖD! ALSO VERSUCH WAS ANDERES!

Ich speichere das file unter: 
e:\Dokument1.txt

und tipp folgendes in den DOS-Prompt:
*D:\j2sdk1.4.1_01\bin>javac e:\Dokument1.txt
javac: invalid flag: e:\Dokument1.txt
Usage: javac <options> <source files>
where possible options include:
    -g                                                                    Genereate all debugging info
    -g:none                                                            Generate no debugging info
    .
    .
    .
    -help                                                                Print a synopsis of standart options

D:\j2sdk1.4.1_01\bin>*

AAAAAAAAAAAAAAAAAAAAAAAAAAAHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH.......

So, jetzt seid ihr dran. Ich hab keinen Bock mehr. Lass mich doch nicht verarschen.


mfg


----------



## bygones (26. Jul 2004)

1. fehler: falsche PATH Variablen
2. fehler: datei scheint es nicht im Ordner zu geben ?!
3. fehler: siehe Beni unten

schau mal hier http://www.java-forum.org/de/viewtopic.php?t=6424


----------



## Beni (26. Jul 2004)

> Ich speichere das file unter:
> e:\Dokument1.txt



Das File muss genau gleich heissen wie die darin angegebene Klasse und es sollte nicht mit einem "txt" abgeschlossen werden:

Versuchs mal mit _"Hello.java"_.


----------



## needyourhelp (26. Jul 2004)

Sorry, ich hab noch mal genau hingeschaut und zwei Fehler entdeckt:

1. Ich hab * und / vertauscht gehabt und 
2. fehlte ein ; 

Ich hab Hello.java auch in Hello.class umwandeln können. Allerdings musste ich dazu Dokument1.txt erst in Hello.java umbenennen und nach d:\j2sdk1.4.1_01\bin verschieben. Das ist doch nicht deren Ernst. 

Wie erspare ich mir diese umständliche Prozedur. Erst muss ich die Datei umbenennen, dann ins Verzeichnis mit javac.exe verschieben und schließlich noch im DOS-Prompt das Verzeichnis wechseln.

Ich weiß, das sollte mein geringstes Problem sein. Aber leider stimmts nicht mit der Buchanleitung überein und auf eine konfortable Bedienung will ich nicht verzichten; auch am Anfang nicht. Ist da was zu machen oder muss ich die *.java_files im bin_Ordner abspeichern. Es nervt halt tierich, wenn ich die Dateien extra umbenennen und unübersichtlich abspeichern muss.


 ???:L  Oder hab ich was falsch verstanden bezüglich des Hello.java_Beispiels ausm Buch und den Umgebungsvariablen.



mfg


----------



## bygones (26. Jul 2004)

du musst einfach die Datei richtig abspeichern, dann musst du auch nichts umbenennen...

ich verweise nochmal hierauf: http://www.java-forum.org/de/viewtopic.php?t=6424


----------



## needyourhelp (26. Jul 2004)

:idea:  :applaus: , Ich habs doch tatsächlich gerafft:

"Erstelle Datei Hello.java", :###  heißt, Datei namens "Hello.java" abspeichern. Ich bin also doch zu blöd :meld: .

Es nerven nur noch die Umgebungsvariablen. Hab ich doch richtig verstanden, oder?: Ich kann im DOS-Prompt aus c:\, javac.exe aus d:\ aufrufen?!?! :?: Was muss ich ggf. ändern?

Gibts noch ne Lösung fürs Abspeichern, oder *muss* *.java im selben Ordner wie javac.exe sein???



mfg


----------



## Beni (26. Jul 2004)

needyourhelp hat gesagt.:
			
		

> Allerdings musste ich dazu Dokument1.txt erst in Hello.java umbenennen


Jop, das ist Java-Standart. Und wenn man sich daran gewöhnt hat, ist es gar nicht so schlimm (es macht ja eigentlich auch Sinn).



			
				needyourhelp hat gesagt.:
			
		

> und nach d:\j2sdk1.4.1_01\bin verschieben.


Das muss nicht sein, man kann das Kommando auch anders eingeben:


> C:\Documents and Settings\Benjamin Sigg>c:\j2sdk1.4.2_01\bin\javac Hello.java



Ich darf dazu zitieren:


			
				Beni hat gesagt.:
			
		

> Im Ordner compile\src habe ich die beiden Dateien "Main.java" und "Call.java", mit den Inhalten:
> 
> Main.java
> 
> ...



]


----------



## Stefan1200 (26. Jul 2004)

In diesem Fall:

D:\j2sdk1.4.1_01\bin> javac Hello.java

Muss natürlich auch die Hello.java in dem Ordner D:\j2sdk1.4.1_01\bin liegen, sonst wird die nicht gefunden.
Auch ganz wichtig: Beachte die Groß-Kleinschreibung von Dateinamen!


----------



## needyourhelp (26. Jul 2004)

(Ich kann natürlich die *.java_files gleich im bin_Verzeichnis abspeichern. Da spart man zwar das Verschieben, aber einstellen muss man es trotzdem jedesmal von vorn> nervt ohne ende, mich jedenfalls.)

@ Beni:Aber ich denke du willst mir was ganz anderes sagen. Könntest du das noch etwas erläutern, ich versteh nähmlich nur Bahnhof :bahnhof: .

@All:Und wäre jemand noch so freundlich und bringt mir die Sache mit der richtigen Umgebungsvariable bei? DANKE   


mfg


----------



## needyourhelp (26. Jul 2004)

Gebt euch maln Ruck und erklärt einem Unwürdigen noch den richtigen Umgang mit der Umgebungsvarialen.

ein unterwürfigstes thx_for_all


----------



## Beni (26. Jul 2004)

> Aber ich denke du willst mir was ganz anderes sagen



Hmm (bin ich so schlecht im erklären?)

Ich will dir sagen: du musst /sollst (!) deine *.java Dateien nicht im bin Verzeichnis speichern.

Wenn man die Eingabeaufforderung benutzt, kann man entweder "javac" eintippen. Dann versucht Windows eine Variable die "javac" heisst zu finden, und die auszuführen.
Oder man kann "c:\j2sdk [...] \bin\javac" eingeben, als vollständiger Pfad. Dann wird genau dieses javac ausgeführt, _egal woher man es aufruft_.

Und wenn du noch eine Batch-Datei (*.bat) schreibst, kannst du den Compiler mit einem Doppelklick starten, was noch praktischer ist.


----------



## Stefan1200 (27. Jul 2004)

needyourhelp hat gesagt.:
			
		

> Gebt euch maln Ruck und erklärt einem Unwürdigen noch den richtigen Umgang mit der Umgebungsvarialen.



Windows NT4, Windows 2000, Windows XP, Windows 2003:
Systemsteuerung -> System -> Erweitert -> Umgebungsvariablen


----------



## needyourhelp (27. Jul 2004)

Hi@all  ,

@Beni:...oder ich verwende den jbuilder von Borland. Nee, schon klar, aber bei deinem obigen Zitat blick ich trotzdem nicht durch. 
Die Sache mit der Batch-Datei ist ziemlich umständlich, ich leg doch nicht für jede*.class_Datei eine Verknüpgung auf einem Desktop an - aber Danke für den Hinweis, so solls sein.

@Stefan1200ie Umgebungsvariable ist jetzt auch kein Problem mehr. Wo ich sie finde wußte ich ja schon vorher, nur hab ich halt streng nach Buch nicht nachgedacht und den Hafer, s.o., einfach übernommen, was aber nicht ging.
Ein einfaches d:\jdk\bin (hab nochmal neu installiert; man hackt sich sonst ohne die U-Variable, die erst später kam, die Finger krumm) reicht völlig aus.
Jetzt ruf ich ohne probs aus einem beliebigen Verzeichnis z.b. den Interpreter java.exe auf. Allerdings gibts jetzt ein Neues Problem:

Der Sinn des Classpath ist es ja, ein Suchverzeichnis für *.class_Dateien zur Verfügung zu stellen. Leider funzt das bei mir noch nicht. Ruf ich die entsprechende Datei in ihrem Verzeichnis (e:\jdk_files>java Listing0202) auf, läufts. Mach ich das aber von einem x-beliebigen, wird folgende Fehlermeldung ausgegeben(Listing0202 in e:\jdk_files; java.exe in d:\jdk\bin):

*E:\>java Listing0202
Exception in thread "main" java.lang.NoClassDefFoundError: Listing0202

E:\*

Wasn nu? Was heißt das? Mit dem file sollte alles stimmen, denn aus e:\jdk_files aufgerufen, läufts.

Der Eintrag in den Umgebungsvariablen des Systems sieht wie folgt aus:
Name der Variablen: Classpath
Wert der Variablen: e:\jdk_files



Bis dann


----------



## needyourhelp (13. Aug 2004)

Da ich mich ja entschieden habe, die Hilfe dieses Forums in Anspruch zu nehmen, sollte ich darauf achten, zumindest
nicht als Vollidiot dazustehen - auch wenn ich offensichtlich einer bin(ist aber ein anderes Thema ???:L ). Sicher ist, dass ich mir, wie banal dass für jemanden hier sein mag, erst selbst den schädel einschlag, bevor ich dazu die Hilfe eines Fremden beanspruche.

Nun zur Verteidigung: Ich hab nicht gewußt, was ihr als zu banal übersehen habt. Nähmlich dass es beim Thema "Class-Dateien" ,zumal für einen absoluten Frischling(Java ist für mich der erste Kontakt mit einer Programmiersprache und deshalb ne harte Nuss mit einem Buch für Fortgescgrittene), zu Missverständnissen kommen kann. So hatte ich mich denn auch in die vom Compiler erstellten *.class-Dateien verrannt, da ich von öffentlichen Klassen als sinnvolle Einheit von Eigenschaften und Methoden noch nichts wusste. Es konnte also nur schiefgehen, in den Umgebungsvariablen einen Classpath anzulegen, der auf die "falschen" class-dateien verweist.

Hoffe, dass hat mir und später auch anderen a bissl geholfen.



mfg


----------



## Morphin (14. Aug 2004)

Hallo needyourhelp,

Fehler beseidigt.

gruß
Morphin


----------

