Schlagwort-Archive: bug

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.

Geschrieben von Kap. Zuletzt geändert am 4. Januar 2014.

Ich und mein Computer: Symbolische Links

Es gibt eine ganze Liste von Fehlern, die ein Computer so haben kann. Deichkind beschreiben in ihrem Song Ich und mein Computer einige davon. Die meisten davon waren mit bekannt, und einige wie „Festplatte Voll“ und „Falsche Version, Update nicht verfügbar“ hatte ich natürlich auch schon. Selbstverständlich auch den Refrain „Sanduhr – Sanduhr“.

Auf meinem Linux-Rechner bin ich vor der Sanduhr verschont, dafür gibt es aber ein Problem, an das der Typische Windws-User nicht denkt. (Bei Äpfeln gibts das theoretisch auch, da ja auch ein Unix drunter ist. The More You Know ;) )

The More You Know - Have A Mac? - You Use UNIX!

Nun hatte ich das Problem, dass Wuala auf dem Linux-Rechner ein Verzeichnis nicht synchronisiert. In der Sync-Übersicht (Strg+F9) wurde bei dem Sync-Auftrag zwar ein grünes Häkchen angezeigt, die Größe des Verzeichnisses stand aber bei 0 B, obwohl das Verzeichnis ganz sicher Dateien enthielt. Nach langem Suchen, was wohl die Ursache sein könnte, fand ich heraus dass ~/Data ein symbolischer Link auf ein anderes Verzeichnis war. Wuala scheint symbolische Links nicht zu unterstützen, nach Änderung auf den absoluten Pfad klappte auch das synchronisieren.

:facepalm: ich hatte das gleiche Problem bereits mit Thunderbird, das den Profilordner nicht ordnungsgemäß lädt, wenn er einen symbolischen Link enthält.

In dem Sinne: Programm findet Daten nicht, symbolischer Link benutzt!

Geschrieben von Kap. Zuletzt geändert am 20. November 2013.