RCP Problem mit Umsetzen des Workspace unter Win

dzim

Top Contributor
Hallo zusammen,

in den letzten Tagen bin ich über ein Problem mit der InstanceLocation (Platform.getInstanceLocation()) gestoßen.
Ich habe eine eigene Routine für das Setzen des Workspaces geschrieben (was, am Rande erwähnt, nur geht, wenn die Applikation vorher mit -data @noDefault gestartet wurde).
So weit so gut...
Das Problem aber ist folgendes: Unter unser Windows-Umgebung (Server...) wird für den Workspace-Lock, die Logs, die Dialog-Settings - kurzum alles was die Anwendung so während ihres Lebenszyklus in den Workspace schreibt, in ein völlig falsches Verzeichnis geschrieben.
Der Pfad wäre Beispeilhaft: "C:\Document and Settings\dzim\Desktop\my-workspace" und aufgrund der URL der InstanceLocation - soweit bin ich sicher - aus dem anscheinend viele ein location.getURL().getFile(), folgender String entsteht: "C:\Document%20and%20Settings\dzim\Desktop\my-workspace".
Während ich in meiner Anwendung darauf Achte, das zu umgehen, scheinen viele andere Teile der Eclipse-API das nicht.

Kennt ihr das Problem, wisst ihr, wie man es umgehen kann?

Vielen Dank im voraus!!!
Daniel
 
Das Problem ist unabhängig vom Betriebssystem...
Sobald ein Leerzeichen im Pfad ist, wird ein %20 eingefügt.
Mir ist es insofern schleierhaft, als ich die grundlegende Routine aus der IDEApplication selbst kopiert habe - und für die funktioniert es ja...
 
Nach einigem Suchen ist des Rätsels Lösung gefunden:
"new File(fullPath).getURI().toURI().toURL()" --> das toURI sorgt dafür, das einige Zeichen, wie z.B. das Leerzeichen, maskiert werden.
"new File(currentWS).toURL()" ist zwar deprecated, bringt aber aus Eclipse-Sicht das richtige Ergebnis. Schlußendlich müssen alle Anfragen an die InstanceLocation von "new File(instanceLoc.getURL().toURI())" auf "new File(instanceLoc.getURL().getFile())" geändert werden, und schon erhält man die korrekten Pfade (man könnte hier auch statt File die Path-Klasse verwenden, das Prinzip bleibt das selbe).

Wieder was dazugelernt. Und nun bin ich in der großen Welt der Eclipse-API wieder ein Paar Erfahrungen reicher (ich hätte mir das hier gern erspart...).

Ich hoffe, dass es euch hilft, solltet ihr je in eine Ähnliche Lage geraten.
 
URIs müssen encoden, das ist Sinn der Sache. new File(fullPath).getURI().toURI().getPath gibt dir die dekodierte Variante (schließlich interessiert du dich ja nur für die Path Portion der URI).
Sehe ich jetzt weniger als ein Eclipse Spezifika, URI wird sehr häufig falsch verwendet.
 
Kann sein, ich hab mir darum nur vor diesem Vorkommnis nie wirklich Gedanken gemacht...
Danke für den Tipp mit dem getPath()!
 

Neue Themen


Zurück
Oben