# javac kann trotz PATH-Eintrag nicht gefunden werden (Hello World)



## devastator23 (8. Mrz 2015)

Guten Morgen liebe Java Nutzer,

ich bin gerade dabei, Java anhand eines Tutorials zu erlernen - oder eben daran zu scheitern. Wie in wohl jedem Tutorial geht alles recht harmlos los, Hello World ist verlangt. Der Quelltext wird vorgegeben. Und dann geht es ans Ausführen.

Ich habe einen Screenshot angefügt, der hoffentlich alles Nötige dokumentiert, was ich nun beschreibe:

Hello.java befindet sich in c:\java.

JDK und JRE befinden sich in C:\Program Files\Java im jeweiligen Unterverzeichnis.

Ich verwende Windows 7 mit 32 Bit. Und in Deutscher Sprache, so dass C:\Program Files und C:\Programme irgendwie das Gleiche sind - oder auch nicht - und damit eine mögliche Fehlerquelle.

Ich habe unter Windows den PATH zum JDK gesetzt (aktuell mit C:\Programme\[...], aber auch C:\Program Files\[...] zeigte das gleiche Verhalten).

Jetzt öffne ich die Eingabeaufforderung.

PATH zeigt die PATH-Variable an, eben auch den Verweis auf den Bin-Ordner des JDK.

Ich wechsle in den Ordner C:\java, in dem sich Hello.java befindet.

javac Hello.java liefert eine Fehlermeldung.

Ich wechsle dann in den Bin-Ordner des JDK.

javac C:\java\Hello.java funktioniert.

In C:\java befindet sich nun zusätzlich Hello.class.

Aus C:\java kann ich nun java Hello korrekt ausführen.



Kurzum: java scheint mittels PATH-Variable zu funktionieren, javac aber nicht. Ich habe als Lösungsvorschläge fast ausschließlich Hinweise auf die PATH-Variable gefunden, aber so weit ich als Laie das überblicke funktionierten jeweils java UND javac gleichzeitig ober beide funktionierten gleichzeitig nicht.

Ich wäre sehr dankbar, wenn ein erfahrener Java-Nutzer da mal einen Blick drauf werfen könnte und mir erklären könnte, was ich falsch mache und wie ich es korrigieren kann.


----------



## devastator23 (11. Mrz 2015)

Nun, offenbar scheint mein Problem weder trivial zu sein, noch häufig aufzutreten. Eine Lösung habe ich auch noch nicht gefunden, aber falls jemand das gleiche Problem hat und vom ständigen Wechseln der Verzeichnisse in der Eingabeaufforderung genervt ist, kann ich das Arbeiten mit zwei Eingabeaufforderungen empfehlen:



Links lasse ich den Compiler arbeiten, rechts die Programme aus meinem dafür angelegten Ordner laufen. Mittels Pfeil-Nach-Oben-Taste können die beiden Arbeitsschritte ziemlich ausgeführt werden. Zum aktuellen Zeitpunkt arbeite ich offenschtlich noch nicht mit einem speziellen Editor und kann daher auch nicht beurteilen, ob dieses Vorgehen dabei notwendig oder nützlich ist.

Natürlich würde es mich freuen, wenn jemand noch eine Lösung für mein Problem findet.


----------



## VfL_Freak (11. Mrz 2015)

Moin,

wenn ich es richtig sehe, nutzt Du Java8, oder ?
Dort hat sich mal wieder die Lage der Dateien geändert!
Du müsstest unter "ProgramData" den Pfad "Oracle/Java" finden, dort liegen im Unterverzeichnis "javapath" Verknüpfungen auf die drei relevanten exe-Dateien.

Schreib' mal den Pfad *"C:\ProgramData\Oracle\Java\javapath;"* (oder entsprechenden Laufwerksbuchstaben) als erstes in die PATH-Variable, dann sollte es wieder klappen !

Gruß Klaus


----------



## devastator23 (11. Mrz 2015)

Hallo VfL_Freak,

danke schonmal für die schnelle Antwort.

Java8 ist eine gute Frage. java -version sagt es sei Version 1.8.0_31, wie auch der Ordnername des JDK besagt. Ist das Java8? Ich tippe mal ja. Korrigier mich bitte ggf.!

Der Pfad ist bereits am Anfang der Path-Variable gesetzt, wie im Bild aus dem ursprünglichen Eintrag vielleicht zu erkennen ist (ich weiß, es ist offenbar etwas unscharf). Allerdings war das schon der Fall, bevor ich überhaupt den letzten, rot unterstrichenen Eintrag hinzugefügt habe der Fall. Ich weiß also nicht ob das durch meine JDK-Installation geschehen ist oder durch ein voriges Java-Update (da fehlt mir noch jeder ernstzunehmende Überblick über Java und seine Komponenten). Dieser Path-Eintrag ist also nicht unmittelbar mein Werk und ich habe ihn daher unverändert gelassen und nur den Eintrag am Ende hinzugefügt.

Aber vielleicht kommen wir über einen anderen Ansatzpunkt weiter, wie ich gerade sehe: Das von dr genannte Verzeichnis enthält auf meiner Festplatte ganze drei Einträge:

java.exe,
javaw.exe und
javaws.exe.

Jeweils vom Typ SYMLINK. Kann es zufällig sein, dass hier der Verweis auf javac.exe fehlt?

Ich würde ja gerne schon Erfolg vermelden, habe aber auf die Schnelle gerade keine weitere SYMLINK-Datei erzeugen können (nur eine normale Verknüpfung oder wenn ich z.B. den java.exe-SYMLINK kopiere und einfüge eine tatsächliche .exe-Datei).

Weißt du (oder jemand anders) vielleicht, wie ich den entsprechenden javac.exe-SYMLINK in diesen Ordner mogeln kann oder kennt einen anderen Weg?

Danke aber schonmal, VfL_Freak!


----------



## VfL_Freak (11. Mrz 2015)

Moin,

oh, stimmt, Du suchst ja den Complier ... sorry!

Also: erstmal richtig, die 8 steht für Java8 !!

Dann: die Complier-exe liegt im BIN-Verzeichnis des installierten JDK.
Du benötigst also in den Systemvariablen die Variable CLASSPATH mit dem Eintrag "C:\Program Files (x86)\Java\jdk1.7.0_75\bin" (rsp. Dein entsprechender Pfad) !!

Gruß Klaus


----------



## devastator23 (11. Mrz 2015)

Gesagt, getan, gescheitert.

Ich habe CLASSPATH erstellt, verschiedene Schreibweisen des Pfades ausprobiert (Program Files, Programme, mit und ohne (x86)) und jedes Mal kommt die gleiche Fehlermeldung.

Daher danke ich dir erneut, aber kann das Problem leider nicht als gelöst bezeichnen.

Ich fürchte, da ich mit PATH und Co. noch nie gearbeitet habe, dass ich irgendwo einen Anfängerfehler einbaue oder irgendwas (scheinbar?) Triviales übersehe.


----------



## VfL_Freak (11. Mrz 2015)

Moin,

es muss schon die "englische" Schreibweise sein, also "Program Files (x86)".
So heißt das Verzeichnis intern IMMER, alles andere sie nur Anzeigen/Umlenkungen für die deutsche Version!!

Du könntest auch noch schauen, ob JAVA_HOME auf "C:\Program Files (x86)\Java\jdk1.7.0_75" zeigt !

Und ggf. mal die HD komplett nach "javac.exe durchsuchen !!

Gruß Klaus


----------



## devastator23 (11. Mrz 2015)

Langsam zweifle ich an mir.

Ich habe in den Untiefen des Internets drei Varianten gefunden, die angeblich alle das Problem beheben: C:\Programme, C:\Program Files und C:\Program Files (x86). Zwar nicht ausdrücklich für mein Win7 32 Bit (Letzteres natürlich für 32 Bit), aber alle drei haben bei mir keinen Erfolg in path gebracht.

JAVA_Home habe ich mehrfach gefunden, habe es als Benutzer- und Systemvariable ausprobiert. Das scheint aber nur eine Kurzschreibweise zu sein. Vor deiner letzten Antwort hatte ich es wieder gelöscht (ich hatte es ursprünglich auch selbst erstellt), nun wieder erzeugt.

An irgendeiner Stelle schrieb wer, dass bei ihm unter XP in der path-Variable der Verweis auf das Verzeichnis, in dem javac.exe sich befindet, am Anfang stehen musste. Ich habe es gerade an den Anfang kopiert, kein Erfolg.

javac.exe befindet sich einmalig auf der Festplatte, nämlich in C:\Program Files\Java\jdk1.8.0_31\bin. So zumindest die Schreibweise (also ohne (x86)), mit der ich javac über die Eingabeaufforderung ausführen kann. javac.exe funktioniert ja auch, ich kann ja kompilieren und erfolgreich ausführen. Aber ich kann javac.exe eben ausschließlich aus dem o.g. Verzeichnis aufrufen.

Kann es nicht sein, dass ein SYMLINK zu javac.exe in das javapath-Verzeichnis gehört?

Sorry, wenn wir uns irgendwie wegen eienr Kleinigkeit hier im Kreis drehen, aber einer hat hier ein Brett vorm Kopf: Mein Rechner oder ich.






*Nachtrag:*

Ich habe den JDK-Pfad aus path wieder entfernt. Dann wollte es naturgemäß nicht funktionieren. Dann habe ich ihn wieder reingeschrieben, mit Program Files, ohne x86. Jetzt läuft javac auch aus c:\java! Dafür aber kann ich java von dort nicht mehr ausführen, mit Programmen, die vorher funktioniert haben?????

Fehler: Hauptklasse [NAME] konnte nicht gefunden oder geladen werden.

Ich mache mich mal auf die Suche nach dieser Fehlermeldung.


*Nachtrag 2:*

I werd' narrisch!

Jetzt habe ich zusätzlich den CLASSPATH wieder rausgeschmissen und es scheint zu funktionieren!

Aber frag mich bitte niemand, warum!

Fürs Protokoll: CLASSPATH: Kein Eintrag.

path an erster Stelle: C:\ProgramData\Oracle\Java\javapath;

path an letzter Stelle: c:\Program Files\Java\jdk1.8.0_31\bin

KEIN (x86), Am Ende (nach \bin) KEIN Backslash und KEIN Semikolon. Ob der Eintrag case-sensitive ist, kann ich nicht sagen, weil ich nur den Laufwerksbuchstaben klein geschrieben habe.

Ich bin mir sicher, diese Konstellation am Anfang erfolglos ausprobiert zu haben und weiß nicht, ob es jetzt dauerhaft funktionieren wird. Wenn nicht, dann melde ich mich selbstverständlich.

An dieser Stelle nochmal ein dickes DANKE an VfL_Freak (es wird wieder Zeit für Zweitligafußball an der Bremer Brücke) und an alle etwaigen Helfer, die Zeit investiert haben, sich aber nicht zu Wort gemeldet haben!


----------



## VfL_Freak (11. Mrz 2015)

Moin,
wir sollten erstmal klären, was Du überhaupt für ein System hast !!



devastator23 hat gesagt.:


> javac.exe befindet sich einmalig auf der Festplatte, nämlich in C:\Program Files\Java\jdk1.8.0_31\bin. So zumindest die Schreibweise (also ohne (x86)), mit der ich javac über die Eingabeaufforderung ausführen kann.


Aha !!
Das bedeutet, dass Du ein 64-bit-Java drauf hast !!!



devastator23 hat gesagt.:


> javac.exe funktioniert ja auch, ich kann ja kompilieren und erfolgreich ausführen. Aber ich kann javac.exe eben ausschließlich aus dem o.g. Verzeichnis aufrufen.


Was auch ok ist !!



devastator23 hat gesagt.:


> Kann es nicht sein, dass ein SYMLINK zu javac.exe in das javapath-Verzeichnis gehört?


Nein, die drei dortigen Dateien sind für WebStart notwendig, nicht zu compilieren !!
Sie liegen da auch, wenn nur ein JRE installiert ist ...

Gruß
Klaus


----------



## devastator23 (11. Mrz 2015)

Blödes Timing!

Es läuft, siehe Nachtrag 2.

Ein 64-Bit-Java sollte NICHT der Fall sein, es sei denn, die x86-Version des Downloads auf der offiziellen Homepage hat eine 64-Bit-Java-Datei namens "jdk-8u31-windows-i586" im Angebot. Generell reicht es (wie du oben sehen kannst) C:\Programme bzw. C:\Program Files anzuwählen, einen x86-Ordner habe ich laut Anzeige (!) nicht (aber DEFINITIV 32-Bit Win7 laut Systemsteuerung und die dumme RAM-Einschränkung auf unter 4 GB, obwohl ich 4GB eingebaut habe). Frag bitte nicht, warum Program Files (x86) nicht angezeigt wird, ich bin nur dummer Nutzer.

Aber zumindest vorerst scheint das ohnehin egal zu sein. Dir danke nich nochmal ausdrücklich für deine Hilfe und hoffe, kein großes Chaos hier veranstaltet zu haben.


----------



## VfL_Freak (11. Mrz 2015)

Moin,


devastator23 hat gesagt.:


> (es wird wieder Zeit für Zweitligafußball an der Bremer Brücke)


make my day :lol:


Noch kurz zur Erläuterung:

(a) wenn Du "... DEFINITIV 32-Bit Win7 ..." Dein eigen nennst, dann wirst natürlich auch keine Ordner mit dem Zusatz "(x86)" sehen, weil dann ja alles x86 ist! Nur beim bei 64-bit-Systemen gibt es dann BEIDE Ordner "Programme" und "Programme (x86)". Im ersten liegen dann die 64-bit-Anwendungen und im anderen die 32-bit-Programme!

(b) kurz zur "... dummen RAM-Einschränkung auf unter 4 GB, obwohl ich 4GB eingebaut habe ...".
Die ist nicht dumm, sondern technisch bedingt, weil eben keine größeren Speicheradressen addressiert werden können (4-GB-Grenze)
Wenn Du mehr brauchst/möchstest, dann musst du halt auf ein 64-bit-OS umsteigen !

Gruß Klaus


----------

