Java wird als veraltet angezeigt im IE und FF

Hallo

Ich habe Windows 8.1
Installiert ist die neuste Version von Java: \jdk1.8.0_25
Internet Explorer und Firefox

Wenn ich auf Seiten gehe die Java nutzen, bekomme ich ständing eine Meldung das mein Java veraltet ist. Wenn ich auf den Link klicke es zu aktualisieren dann werde ich weiter zu einer Download Seite geleitet wo ich dann das JRE 1.8.0_25 ladan kann. Aber ich habe es schon Installiert.

BILD 1:
BILD 2:

Wie löse ich das Problem ?

Meine Variablen:
JAVA_HOME als Systemvariable: C:\Program Files\Java\jdk1.8.0_25\jre
PATH als Systemvariable …C:\Program Files\Java\jdk1.8.0_25\bin

Unter Firefox Plugins wird JAVA 8 U11 angezeigt obwohl ich U11 nicht installiert habe.
CMD output für java -version

Was findet sich denn so alles unter C:\Program Files\Java und C:\Program Files (x86)\Java ? Ich wette mit dir das du zwar die 64Bit JRE unter C:\Program Files\Java installiert hast, aber das unter C:\Program Files (x86)\Java noch eine ältere (die von FF angemerkte u11) vorhanden ist (und du somit nur die 32Bit Version von FF installiert hast).
Guck mal in deiner Systemsteuerung unter “Prgramme und Funktionen” nach was da alles an Java wirklich aufm System installiert ist. Auch solltest du mal ein Removal-Tool wie JavaRa anwenden, das räumt erstmal alles was mit Java zu tun hat.

btw : Das JDK enthält zwar auch das JRE, aber nicht so wie du es mit JAVA_HOME versuchst vorzugeben sondern es wird zusätzlich unter \Java\jre1.8.0_25\ installiert. Das man im JDK auch einen jre-Ordner findet liegt daran das die JDK-Tools selbst in Java geschrieben sind und daher das JRE brauchen um überhaupt zu laufen.
Auch wird JAVA_HOME nur von Script-basierten Tools genutzt die halt nicht auf die Registry zugreifen um den aktuellen Pfad zu ermitteln, hat also auf deine Browser überhaupt keinen Einfluss.

Gutm keine weitere Antwort ist auch ne Antwort, gehe also von aus dass das “Problem” gelöst werden konnte.

btw : Wie sonst soll bitte ein Browser eine andere JRE anzeigen als wenn nicht dadurch das halt noch eine weitere installiert ist ? “Problem” daher eindeutig darauf zurückzuführen das irgendwo halt doch noch mehr als nur das JDK8u25 liegen MUSS.

Hallo

Ich habe tatsächlich noch ein Java Ordner gefunden. Aus dem ich aber nicht schlau werde welche Version das ist. Ich nehme aber stark an das ist genau die alte. Unter Programmliste für die deinstallation wird aber nur java 8 u25 angezeigt.

Wie deinstalliere ich jetzt das Java 8 u11 ordnungsgemäß ?

EDIT: Eine Sache noch, wenn ich als PATH und JAVA_HOME das neue Java eingetragen habe, wie kann es den sein das noch irgendein Programm das alte nutzt? Ich dachte immer das path genau dafür da ist.

lg

Wie gesagt : PATH und JAVA_HOME werden nur von wenigen Script-basierten Tools genutzt, und das meist auch nur dann wenn diese direkt über ein Terminal (unter Windows CMD) gestartet werden. Viele “moderne” Programme hingegen nutzen jedoch gerade unter Windows die Registry in der halt Konfigurationen und ähnliches gespeichert werden (anstatt wie vor Windows-Zeiten und unter Unix allgemein üblich in config-Files). Ergo haben viele Umgebungsvariablen nur noch sehr begrenzten Einfluss auf solche Programme, wenn überhaupt, und müssen normalerweise von diesen abgefragt werden.

Unter Windows läuft das eh anders : dort sind (fast alle) Prozesse die man als User vom Desktop aus starten kann Sub-Prozesse von “explorer.exe” (weshalb dann auch gleich ALLES verreckt wenn man z.B. im Taskmanager mal eben explorer.exe killt). Dieser Prozess hat sein eigenes Set an Variablen und Daten und fängt auch viele System-Calls ab und bearbeitet diese.
Das sieht dann ganz grob in ungefähr so aus : BIOS > Bootloader (NTLDR) > winload.exe/.efi (noch teil des Bootloaders) > wininit (Übergang vom Booting zur GUI) > winlogon (Anmeldemaske) > DWM (Window-Manager (der eigentliche Desktop)) > explorer > User-Prozess
Lediglich in dieser Aufrufkette sind Dinge wie “PATH” interessant um halt den low-level Boot-Systemen klar zu machen wo halt letztlich explorer.exe zu finden ist. So bald aber erstmal der Explorer selbst läuft und das starten von weiteren Sub-Prozessen steuert sind solche Informationen ziemlich unwichtig und werden vom high-level-System durchgeführt.

Eine Ausnahme bilden höchstens noch Befehlsinterpreter wie CMD.exe oder PowerShell. Da ein DOS-kompatibler Befehlsinterpreter in der Regel so arbeitet das er im aktuellen Verzeichnis nach ausführbaren Files sucht und man normalerweise nicht immer den vollen Pfad angeben will gibt es eben PATH und PATHTEXT. PATH enthält entsprechend Verzeichnisse unter denen Binaries zu finden sind, PATHTEXT möglich Endungen wie EXE, BAT und andere.

Gibt man nun also “javac” ein guckt der Interpreter erstmal ob es ein internes Kommando ist. Wenn nicht wird angenommen es soll damit ein ausführbares Binary gemeint sein. Dann wird erst im aktuellen Pfad gesucht und anschließend in allen weiteren Pfaden die über PATH bekannt sind. So ergibt sich dann die Kombination : (für jeden Pfad in PATH) + “binary-name” (also das was man eingibt) + (für jede Endung in PATHTEXT).
Dieses Schema ist übrigens unter anderem auch Grund das man unter Windows eigentlich keine Files ohne Dateinamenerweiterung (Endung) hat was hingegen bei Unix dank bestimmter Namenskonventionen doch schon eher bekannt ist.

ABER : Das hat überhaupt keinen Einfluss darauf was dein Browser macht. Dein Browser ist ein Sub-Prozess von Explorer.exe und erhält zwar alle Umgebungsvariablen, ist aber nicht drauf angewiesen diese zu nutzen da es dafür bestimmte Calls der Win-API gibt die sowas dann erledigen.
Was dein Browser aber macht ist : er guckt über die Win-API in der Registry nach verfügbaren Java-Plugins. Dabei kommt es auch drauf an ob 32Bit oder 64Bit.
Grund : Unter einem 64Bit OS werden Informationen von 32Bit Programmen und 64Bit Programmen in unterschiedlichen Schlüssel-Bäumen gespeichert.
Wenn du also einen 32Bit Browser hast aber z.B. nur ein 64Bit Java so kann dein Browser trotzdem kein Java ausführen da 1) kein kompatibles Plugin vorliegt (man kann in einem 64Bit Prozess keine 32Bit DLL laden) und 2) auch in der Registry kein Eintrag (zumindest für diesen Fall) existiert.

Was bei dir jetzt also aufgetreten ist : du hast irgendwann mal eine ältere JRE in der passenden Bit-Variante installiert und deine Browser haben daraufhin dann das korrekte Java-Plugin genutzt. Nun hast du eine aktuellere JRE allerdings in einer anderen Bit-Variante installiert. Somit steht dieses den Browsern nicht zur Verfügung (weil geht halt nich) und ist auch über die Registry für diese gar nicht bekannt.

Meist tritt das auf wenn man völlig sinnfrei auf java.com geht und dort den Auto-Installer nutzt statt halt sauber von Oracle die Binaries zu laden und selbst zu installieren (dabei ist die Reihenfolge erst 32Bit dann 64Bit wichtig).

Und wenn das alles nichts hilft gibt es wie gesagt Tools wie JavaRa die sich um die “Leichen” kümmern und das System mal davon befreien.

(PS : stehe für wietere Fragen gerne offen, kann aber auch einiges falsch sein weil es dann schon extrem Platform-spezifisch wird; auch ist der “Anfänger”-Bereich für solch ein eigentlich Anwendungs-Problem auch nicht gerade optimal)

Ja, ist veraltet. Also dir wird angezeigt, veraltet, obsolet oder deprecated? Das ist critical. Deinstalliere erst alle Jav-Versionen, dann installiere erst (die 32-bit- und dann) die 64-bit-Version auf der Seite von Oracle. Und das mit der “PATH”-Variable…

[ot]@CB
Nimms bitte nicht persönlich, aber ich möchte dir dann zumindest doch mal unterstellen das du zumindest den 2. Post von TO nicht gelesen, oder wenn dann zumindest nicht richtig verstanden hast.

Unter Programmliste für die deinstallation wird aber nur java 8 u25 angezeigt.

Mir selbst ist auch bewusst dass das schon ziemlich merkwürdig ist und auf eine vermutlich fehlerhafte Installation oder nicht vollständige De-Installation hinweist, und es kann auch möglich sein das beim „Online-Setup“ irgendwas irgendwie anders läuft als es „für uns“ normal ist wenn wir halt von Oracle die JDKs ziehen, aber sowohl auf das komplette Entfernen vom System mit Hilfe Tools wie JavaRa sowie dem Hinweis auf das Laden von Oracle und die Installationsreihenfolge habe ich bereits hingewiesen.

Auch ergibt es an sich halt nicht wirklich sinn.

„Ja, ist veraltet.“ - Auf welche Frage von TO (bzw welche Anmerkung von mir) möchtest du damit antworten ? WAS das Problem ist weis TO, er hatte ja danach gefragt wie er es lösen kann und was er tun soll.

„Also dir wird angezeigt, veraltet, obsolet oder deprecated?“ - Mal von der fehlerhaften Grammatik abgesehen werden die Begriffe „obsolet“ und „deprecated“ einem normalen User ganz sicher nicht angezeigt. „deprecated“ kennt man als Coder und die daraus (eigentlich redundante) Erklärung das damit etwas „obsoletes“ angezeigt wird.

„Das ist critical.“ - Und was genau wenn man fragen darf ? Das eine veraltete Version genutzt wird ist doch seit der Neuerung des Update-Zyklus nur noch selbstverständlicher als es schon vorher war. Und auch wenn es mitlerweile (weis gar nicht mehr wann der hinzugefügt wurde) einen Update-Reminder gibt so nutzen diese doch nur sehr wenige. Gut, das Oracle jetzt so n bisschen Druck sowohl auf User als auch auf Entwickler ausübt mit den (in meinen Augen ziemlich übertriebenen) neuen Sicherheitsrichtlinien, darüber kann man sich mal am Stammtisch unterhalten, aber was bringts wenns keiner macht ? Da kann man ein noch so großes Plakat „MACHE MA !“ schwenken wenn keiner hinguckt.

„Deinstalliere erst alle Jav-Versionen, dann installiere erst (die 32-bit- und dann) die 64-bit-Version auf der Seite von Oracle.“ - Wie gesagt : hatte ich bereits erwähnt.

„Und das mit der „PATH“-Variable …“ … wissen wir beiden nicht so genau > da sollte man lieber noch mal im MSDN nachlesen was es damit nun genau auf sich hat und welche Bedeutung es heute in Windows noch spielt.

Wie bereits schon mal angesprochen : manchmal wirkt es echt als ob dieser Account von mehreren Personen genutzt wird und der eine nicht weis was der andere schreibt.
Ich weis schon das ihr meine meist doch recht langen und daher ziemlich fehleranfälligen Posts nicht gerne vollständig lest, aber grob überfliegen und dann an gewissen Passagen doch mal halt machen sollte doch bitte mal drin sein.[/ot]