java.util.prefs.Preferences "not visible"

Mike65

Mitglied
Hallo,

ich bin vor einigen Wochen in die Java- und JavaFX - Programmierung eingestiegen, vorher habe ich allerdings mehrere Jahre C/C++ programmiert. Nach weitgehendem Durcharbeiten der Bücher "Java ist auch eine Insel" und "Learn Java FX 8" klappt es jetzt ganz gut und schreibe gerade meine erste größere Anwendung.

Nun habe ich aber ein Problem, an dem ich nicht mehr weiterkomme: Ich möchte einige Einstellungen in meinem Programm permanent speichern, z.B. den zuletzt geöffneten Filepfad. Hierzu gibt es laut "Insel" die Klasse Preferences, mit der sich in Windows auf die Registry zugreifen lässt. Genau das, was ich brauche.

Leider gibt mir
import java.util.prefs.Preferences;

die Fehlermeldung:

Error🙁13,17) java: package java.util.prefs is not visible.

import java.util.ArrayList funktioniert dagegen problemlos. Laut Info im Web bedeutet das wohl, dass das package veraltet ist und nicht mehr genutzt werden sollte. Warum? gibt es einen Ersatz dazu? Wenn nein, wie kann ich das package trotzdem einbinden?

Vielleicht noch wichtig, ich nutze OpenJDK 15 und das JavaFX SDK 14.0 von Gluon. Entwicklungsumgebung ist IntelliJ.

Vielen Dank
Mike
 
Sorry, da ist etwas beim Absenden schiefgegangen.

Meine Frage ist:

Ich bin Neueinsteiger in die Java/JavaFX-Programmierung, habe aber viel erfahrung in C/C++. Ich arbeite bnun an meiem ersten größeren JavaFX - Projekt und nutze IntelliJ mit OpenJDK 15, Gluon JavaFx 14 und Maven zum Erstellen. Nun möchte ich User-Präferenzen permanent abspeichern. Laut "Java ist auch eine Insel" ist dazu die Klasse "Preferences" da, die sich im Package java.util.prefs.Preferences findet. Leider gibt mir

import java.util.prefs.Preferences;

beim compilieren die Fehlermeldung:
  • Error🙁13,17) java: package java.util.prefs is not visible
import java.util.ArrayList funktioniert aber. Ich vermute, dass das Paket java.util.prefs aus iregndeinem Grund nicht gefunden wird. Woran könnte das liegen?
 
Ab Java 9 gibt es die Java Module. Sobald du ein Modul konfigurierst musst du angeben, welche Module du nutzt.

Du wirst vermutlich java.prefs einbinden müssen (https://docs.oracle.com/javase/9/docs/api/java.prefs-summary.html)
Danke für die Antwort! Ich habe inzwischen die Lösung gefunden:
Im File module-info.java fehlte die Zeile:

requires java.prefs;

Ich hätte gedacht, dass Maven das automatisch macht, wenn das enstprechende import statement am Fileanfang steht.
 
Eine Alternative Lösung wäre noch, die Module-Info ganz zu löschen. Dann ist der eigene Code im unnamed package. Dieses hat sozusagen auf allen Modulen im Projekt automatisch ein require und exportiert alles.

Wenn man sich mit dem Modul System von Java noch nicht auseinander gesetzt hat, dann ist dies ggf. die bessere Wahl, um weitere, ähnlich gelagerte Fälle zu vermeiden.

Maven ist ansonsten nur ein Build System. Das nutzt dann diverse Tools wie z.B. Den Java Compiler um das Projekt zu bauen. Aber das ändert keine Source Files, die Du als Entwickler angelegt hast.
 

Zurück
Oben