Bug in Ermittlung der Java Version / Tray weg

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.

BBCode ist eingeschaltet
[img] ist eingeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Ansicht erweitern Die letzten Beiträge des Themas: Bug in Ermittlung der Java Version / Tray weg

Re: Bug in Ermittlung der Java Version / Tray weg

von Siggi » 15 Okt 2023, 12:32

Kurze Rückmeldung: Mit JDK/JRE 21+35 läuft TVBrowser unter Windows ohne ersichtliche Probleme.
Alle meine Plugins inkl. Datenaktualisierung laufen.

Ich nutze: https://adoptium.net/de/temurin/releases/ als JRE x64 unter Windows 11.

Re: Bug in Ermittlung der Java Version / Tray weg

von Siggi » 13 Okt 2023, 16:34

Musst du noch was tun, dass Java 21 läuft bzw. hast du es schon so laufen?

Ich werde zum Wochenende mal ein Versuch wagen.

Re: Bug in Ermittlung der Java Version / Tray weg

von ds10 » 12 Okt 2023, 21:29

Getestet ist es nicht, aber grundsätzlich ist Java abwärtskompatibel. In der Regel sollte TV-Browser also auch mit Java 21 laufen. Aller Voraussicht nach, wird Java 21 in zukünftigen Versionen von TV-Browser eingesetzt werden.

Re: Bug in Ermittlung der Java Version / Tray weg

von Siggi » 10 Okt 2023, 17:53

Hallo,
die Version 21 ist nun LTS.

Gibt es schon Infos zum Support?
Wird diese Version offiziell unterstützt?

Danke.

Re: Bug in Ermittlung der Java Version / Tray weg

von Siggi » 22 Jan 2023, 16:23

Ich habe gestern mal auf die JRE 17 64bit unter Windows aktualisiert (jdk-17.0.6+10). https://adoptium.net/de/temurin/releases/
Läuft bisher alles ohne Fehler. Konnte bisher keine Fehler finden.

Re: Bug in Ermittlung der Java Version / Tray weg

von Siggi » 23 Dez 2022, 14:59

Ich habe heute mal auf die JRE 17 64bit unter Windows aktualisiert (jdk-17.0.5+8). https://adoptium.net/de/temurin/releases/
Läuft bisher alles ohne Fehler. Gibt es was zu testen, wo du dir nicht sicher bist, dass es unter Java 17 läuft?

Im Log liegt folgender Fehler (das aber auch schon mit der Java 11):

Code: Alles auswählen

23.12.2022 14:49:57 tvbrowser.core.settings.PluginSettings:
	INFORMATION: Storing plugin settings for EPGpaid-Daten...
Could not find fetcher.properties on classpath
Des Weiteren einige Punkte zur Übersetzung:

Code: Alles auswählen

23.12.2022 14:53:58 util.i18n.Localizer:
	WARNUNG: Localization of message 'TextComponentPopupEventQueue.copy' should be replaced by Localizer.getLocalization(Localizer.I18N_COPY)

Edit 27.12.2022

Code: Alles auswählen

27.12.2022 16:45:25 util.i18n.Localizer:
	WARNUNG: Localization of message 'ReminderPlugin.pauseTimerMinutes' should be replaced by Localizer.getLocalization(Localizer.I18N_MINUTES)

Re: Bug in Ermittlung der Java Version / Tray weg

von ds10 » 04 Nov 2022, 22:16

Die Klassen befinden sich unter util, die kann man nicht einfach so ersetzen, da Klassen innerhalb dieses Pakets als dauerhaft verfügbar von Plugins erwartet werden. Wenn man dort etwas ersetzen wollte, dann müsste das über mehrere Versionen und Jahre als deprecated gekennzeichnet werden.

Warum sich also die Arbeit machen, wenn es mit dem einfachen Bugfix funktioniert?
Siehe: https://wiki.tvbrowser.org/index.php/%C ... assen_muss

Re: Bug in Ermittlung der Java Version / Tray weg

von Anton_D » 04 Nov 2022, 22:08

Ich habe kurz nachgeschaut: Die JavaVersion Klasse wird nur zweimal benutzt. Daneben gibt es auch die OperatingSystem Klasse, die wird 36 Mal benutzt. Erste Klasse kann man komplett durch die Commons Lang ersetzten. Bei der zweiten Klasse kann man Methoden ersetzen, es gibt auch zwei Methoden, die nicht in Commons Lang vorhanden sind und dann noch zwei, die nicht benutzt werden.

Soll man hier ein bisschen ersetzten / Refactoring betreiben? Wie wäre dann die organisatorische Vorgehensweise? 

Re: Bug in Ermittlung der Java Version / Tray weg

von Siggi » 31 Okt 2022, 13:53

Okay,
aber ich warte mal noch, bis du offiziell eine neue Version von Java freigibst.
Noch kommen ja Updates für Java 11.

Re: Bug in Ermittlung der Java Version / Tray weg

von ds10 » 31 Okt 2022, 13:09

Ganz grundsätzlich sollte es laufen, man kann halt nur nicht garantieren, dass es nicht irgendwo doch Inkompatibilitäten gibt.

Re: Bug in Ermittlung der Java Version / Tray weg

von Siggi » 31 Okt 2022, 13:07

Ist denn der TV-Browser für Java >11 verwendbar?

Ich dachte, da gäbe es größere Probleme und ds10 müsse das generell erst anpassen und eine neue Version veröffentlichen?

Re: Bug in Ermittlung der Java Version / Tray weg

von ds10 » 31 Okt 2022, 09:39

Danke für die Analyse und den Bugfix.

Bug in Ermittlung der Java Version / Tray weg

von Anton_D » 31 Okt 2022, 03:37

Nachdem nach dem erneuten Update von JRE (diesmal Java 19) Tray mit Menü wieder verschwand, habe ich ein bisschen nach der Ursachen gesucht und gefunden. Mit der neuen JRE sieht man in dem Log folgendes Eintrag:

Tray not supported: At least Java 6 is needed to get tray support.

Im Quellcode findet man diese Zeile in der Klasse Java6Tray, Methode init. Als Erstes wird mit

if(JavaVersion.getVersion() >= JavaVersion.VERSION_1_6) {


geprüft, ob wir mindestens Java 6 haben, sonst funktioniert das ganze nicht, da uns die Klassen fehlen.

Wenn man dann die Methode JavaVersion.getVersion() anschaut, findet man schnell die Fehler. In der Zeile 64 wird geprüft, ob man eine Versionsnummer von der Länge 1 hat,

if(version.length() == 1) {

für den ersten Release der Version. Also kein späteres Punkt-Release. Falls ja, dann wird ein ".0" hinten hinzugefügt, damit der Rest des Algorithmus funktioniert. Aber das wird offensichtlich spätestens seit Version 10 nicht mehr so gehen.

Ersetzt man die Zeile durch

if(!version.contains(".")) {

Dann funktioniert das alles auch für die mehrstellige Versionsnummer.

Da ihr sowieso Commons Lang mitbringt, kann man auch das benutzen, muss einfach die Stellen anpassen, die aktuell noch interne Klasse benutzen. Der Quellcode für Tray-Überprüfung dann:

import org.apache.commons.lang3.SystemUtils;
import org.apache.commons.lang3.JavaVersion;

public class MyClass {

public static void main(String args[]) {

//System.out.println(SystemUtils.JAVA_VERSION);
System.out.println(SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_6));
}
}

Nach oben