Der Java user.home-Bug

Ich habe kürzlich mein System neu aufgesetzt und bin dabei auf ein Problem gestoßen, das die Java-Entwickler seit Jahren nicht lösen.

Ich unterteile (unter Windows) mein System in zwei Teile,C: und D:. Auf ersterem Laufwerk installiere ich die Programme und Windows, auf letzterem lagere ich meine Daten. Naheliegend, weil D nach C kommt aber auch für Daten ;) . So kann ich das System neu aufsetzen und die Daten einfach mitnehmen. Nach der Neuinstallation muss ich nur die Ordner von zum Beispiel C:\Users\Benutzername\Desktop wieder auf D:\Desktop umbiegen und alles ist wie gehabt.

Nun wollte ich NetBeans installieren, das schlug aber fehl mit dem Hinweis, dass im Verzeichnis D:\ nicht mehr genug Platz vorhanden sei (etwa 600 MiB waren nötig, meine alte Platte war aber voll) um einen Ordner .nbi anzulegen oO . Nun erinnerte ich mich, dass ich schon immer den Ordner D:\.nbi hatte und den auch durch Löschen nicht dauerhaft entfernen konnte. Eine schnelle Suche ergab folgendes:

Der Ordner .nbi wird von der Installationsroutine angelegt und sollte eigentlich in %USERPROFILE%, also in der Windows-Variante des Home-Verzeichnisses liegen. Im Blog von Tim Ehat fand ich die Lösung: Das Home-Verzeichnis wird von der JVM über eine Systemeigenschaft „user.home“ abgefragt, zum Beispiel so:

public class PropertyTest {
    public static void main(String[] args)
        throws Exception {
			System.out.println( System.getProperty("user.name") );
			System.out.println( System.getProperty("user.home") );
			System.out.println( System.getProperty("user.dir") );
		}
}

In Windows wird jedoch das Elterverzeichnis des Desktops genommen (der bei mir nunmal unter D:\Desktop liegt). Das ist nun auch die Erklärung, warum ich diese Verzeichnisse auf Laufwerk D bekomme.

Man kann das nun ganz einfach Umbiegen: Die JVM fragt eine Umgebungsvariable _JAVA_OPTIONS ab, in der man den Java-Parameter -Duser.home=%USERPROFILE%\AppData\Roaming eingeben kann, oder einen beliebigen anderen Pfad.

Fazit: endlich ist mein System sauber und die Datenplatte von unnötigem Müll befreit. Was die Entwickler dazu getrieben hat, einen selten dämlichen Algorithmus zur Bestimmung des Home-Verzeichnisses zu wählen und das nicht zu fixen, weiß ich leider auch nicht. Im Kommentarbereich von Tims Blog wird angedeutet, dass es an Abwärtskompatibilität liegt. Aber mal ehrlich: Wenn man den Pfad zumindest auf %USERPROFILE% setzt bekommen das normale Anwender nicht mit. Und Nutzer, die ihren Desktop umlegen sollten in der Lage sein, eventuell auftretende Probleme zu Fixen.

Zuletzt geändert: 4. Januar 2014 um 23:16 Uhr.

Geschrieben von .

a.k.a.

Ich bin Diplom-Informatiker, den es von Herten im wunderschönen Ruhrgebiet nach Berlin verschlagen hat. An der TU Berlin forsche ich nun als wissenschaftlicher Mitarbeiter in der kombinatorischen Optimierung an Graphalgorithmen; nebenbei bringe ich Anfängern Programmieren bei. Ich blogge hier über alles was mich interessiert, vor allem Nerdiges und Reisen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

O:-) B-) :cry: :-* :D :-o :P ;) :O :-/ more »