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 . 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.