Hi Leute, ich hoffe ich bin hier im richtigen Forum, ich habe wie der Titel schon sagt das Problem das mein Computer mich verarschen will.
Ich nutz ein Windows 10 64bit mit dem JDK 12.0.1. So weit alles gut, wenn er denn auch das JRE finden würde, ich habe die Umgebung Variablen für Java_Home und JRE_Home auf den JDK Pfad gesetzt der bei mir wie folgt ist : "C:\Program Files\Java\jdk-12.0.1" bei der JRE_HOME Variable habe ich JDK_Pfad\bin drin stehen. in dem bin Ordner ist auch alles drin was vom JRE genutzt wird. Auch die Registrierungsdatenbank habe ich dem Entsprechend an gepasst. Ich weiß einfach nicht was ich noch tun kann.
Ich habe jetzt erst einmal kein Windows Rechner um das zu prüfen, aber manuell in der Registry rumpfuschen ist selten eine gute Idee.
Und die JRE ist oft eine eigene Installation und zumindest auf meinen Systemen ist diese dann in einem Unterordner.
Also auf Linux z.B.
JDK ist installiert in /usr/lib/jvm/zulu-8-amd64/
JRE ist dann in /usr/lib/jvm/zulu-8-amd64/jre
Unter Windows ist meine Erfahrung, dass man bei Oracle Java idealerweise den Rechner bereinigt, d.h.:
- Java deinstallieren
- Reboot (Dabei werden evtl. noch weitere Dateien gelöscht, die in Benutzung waren)
- Manuelle Bereinigung (Was hast Du alles gesetzt und gemacht?)
- Saubere Installation vom JDK (incl. JRE)
- Reboot falls notwendig (Sollte der Installer einem dann sagen... Aber meine Erfahrungen mit Oracle JDK auf Windows sind etwas älter ...)
Danach schauen, ob es soweit funktioniert. Es sollte eigentlich nichts weiter notwendig sein. java -version in einer Kommandozeile eingeben sollte schon funktionieren....
Bis java 8 war die JRE auch eine eigene Installation, erst ab JDK 9 hat Oracle dies weg gelassen. Ich stimme zu das ein Rumpfuschen in der Regestrie seltens gut ist, zu mindestens wenn man nich weiß was man tut jedoch bin ich dies bezüglich gewissen haft vorgegangen. Unter Linux ist das auch kein Problem mit java oder dem OpenJDK, ein hoch auf linux da könnte sich Microsoft ein beispiel dran nehmen. Die Umgegungs Variabeln vom
JAVA_HOME ist C:\Program Files\Java\jdk-12.0.1
JRE_HOME ist C:\Program Files\Java\jdk-12.0.1\bin
Wenn ich in den bin ordner gehe und führe dann java.exe -version kommt das was ich möchte. Wenn ich java -version so eingebe bekomme ich folgende Fehler:
Error: cloud not find java.dll
Erro: Cloud not find Java SE Runtime Enviroment
Ich habe mit hilfe von ORCA mir die JRE 8 Installation angeschaut was dort in die Regestrier unter dem Schlüssel JavaSoft erstellt wird. Dies habe ich dann nur auf die JDK 12 version angepasst. Aber auch dies bringt leider nix. Ich frage mich was sich Oracle da bei gedacht hat. Sonst waren in den JDK Installationen immer eine JRE Installation mit dabei.
Also JRE Home musst du prüfen. Das ist nicht das bin directory! Das sollte etwas sein wie C:\Program Files\Java\jdk-12.0.1\jre
Evtl. reicht das schon?
Das Problem bei Dir müsste sein, dass eben die Registrierung nicht wirklich richtig ist. Unter Windows hast Du halt ein java.exe in System32. Und dieses Executable nimmt dann von den installierten java versionen die aktive.
Somit scheint da etwas schief zu laufen, aber ich kenne die Methodik unter Windows nicht. Unter windows hat man halt dieses update-alternatives für sowas. Und der mac hat eine ähnliche Methode (Da hat man /usr/libexec/java_home).
Was du aber für manuelle Aufrufe auf der Kommandozeile immer setzten kannst ist der PATH. Also einfach den JDK PATH mit bin (also bei Dir C:\Program Files\Java\jdk-12.0.1\bin) in den Path einbauen und zwar vor den bisherigen, so dass es VOR system32 ist!
Ich merke immer wieder, Windows ist mist. Stat die PATH Variabel vollständig durch zu arbeiten macht es so einen mist. Es hat Funktioniert. Danke für die Hilfe.
Nunja - die PATH Variable ist immer gleich - egal ob Windows, Mac oder Linux. Die Path Variable wird immer nur bis zum ersten Treffer durchgegangen.
Daher haben z.B. User auf Unix-artigen Systemen als erstes oft den "." (ARGH, Schreikrampf, fliegt bei mir immer raus!) und dann kommen oft ~/bin für selbst installiertes, /usr/local/bin und dann erst /usr/bin. (/usr/bin ist die Distribution, in /usr/local/bin kann man dann z.B. Neueres rein packen und der Benutzer kann noch einmal was neues drüber packen!)
Windows ist da aber noch relativ gut strukturiert finde ich. Selbst mit der Registry, welche ich einfach als config-Datenbank ansehe, kann ich gut leben. Aber der Mac bereitet mir oft Kopfschmerzen. Da ist halt nichts wirklich einheitlich. Da hat man dann z.B. einen LaunchDaemon aber crontab muss natürlich auch da sein.... Um nur ein Beispiel zu nennen.