# [Eclipse RCP] Relativer Pfad



## SWTRelPath (6. Jul 2011)

Hallo,

Anfängerfrage? Ich habe für mein Eclipse Projekt eine Settings.java welche Strings zu Pfaden beinhaltet.
Der Einfachheit halber habe ich zu Beginn dort die Pfade absolut eingetragen.


```
public class Settings{

   public static final String PATH_TO_ICONS = "C:/Projekt/Icons";
   public static final String PATH_TO_IMAGES = "C:/Projekt/Images";

  // und so weiter ......


}
```

In meinen GUI Klassen referenziere ich die Icons auf diese Weise:


```
Button beispiel = new Button(parent, SWT.PUSH);
beispiel.setImage(Settings.PATH_TO_IMAGES + File.separatorChar + "beispielButtonImage.png");
```


Alles wunderbar. Nun möchte ich das gern auf relative Pfade anpassen, komme aber gar nicht hin damit. Wisst ihr, wie ich das umschreiben muss, damit die Bilder auch zur Laufzeit gefunden werden?
Über ein deploy-product File habe ich eine Standalone Variante meines Plugins erstellt und kann die Icons, Bilder etc. dementsprechend nicht mehr finden. 


Vielen Dank für Vorschläge im Voraus


----------



## Wildcard (7. Jul 2011)

Du solltest die Bilder am besten mit ins Plugin packen. Dann kannst du ganz einfach per relativem Pfad zB über AbstractUIPlugin das Bild laden.


----------



## SWTRelPath (7. Jul 2011)

Hallo,

danke Dir. Habe die Bilder nun mit in das Verzeichnis von src gelegt

---src
---Icons
     |---Icon1.png
    ...........

Den Pfad habe ich so angepasst:

```
public class {

 public static final String ICONS_PATH = "/Icons";
}
```

Leider findet er den Pfad zur Laufzeit nicht. Ist die relative Angabe falsch? Habe schon ohne /   , mit Punkt davor etc. probiert. Erfolglos. Hast Du noch einen Tipp?


----------



## Wildcard (8. Jul 2011)

Nein, das kommt nicht nach src, sondern nach Icons, direkt im Projekt Root.


----------



## Wildcard (8. Jul 2011)

Ach und sowas wie File.separatorChar ist auch falsch, der Pfad trenner ist immer der Forward Slash '/'


----------



## SWTRelPath (14. Aug 2011)

Hey, danke für Deine Hinweise.
Ich bin tatsächlich noch nicht weiter an diesem Punkt, da ich erst ein paar andere Probleme lösen musste.

Vielleicht kannst Du (oder jemand anderes) erneut einen Blick auf mein Anliegen werfen.

Ich habe das Projekt nun nahezu fertig und über das Product File und den Export Wizard eine Stand-Alone Applikation deployed.







Im linken Teil ist mein Projektfenster, rechts meine Stand-Alone Applikation. Im Ordner plugins ist meine Anwendung als *.jar Datei enthalten. Wenn ich das Archiv hineinsehe, dann ist dort auch mein Ordner "MeineDateien" enthalten, denn ich im Quellcode referenziere über meine Settings Klasse.


```
public class Settings{

 public static final String PATH = "C:/Projekt/RCP/MeineDateien/";

 //....

}
```

Ich habe leider noch immer nicht herausgefunden, wie ich in der Settingsklasse den Pfad anpassen muss, dass er aus der *.jar im Stand-Alone-Client gelesen wird. 
Vielleicht kannst Du mir helfen? :/ 

Eine verzweifelte RCP-Anfängerin


----------



## Wildcard (14. Aug 2011)

Bilder lädt man mittels AbstractUIPlugin#imageDescriptorFromPlugin. Als Pfad verwendet man den relativen Pfad im plugin, also zB /icons/yourIcon.gif
Andere Dateien lädt man über den FileLocator.


----------



## SWTRelPath (16. Aug 2011)

Danke Dir schonmal!!

Ich schaue mir das an, was Du mir empfohlen hast. Bedeutet das im Umkehrschluss (so meine erste Intention), dass ich alle Bilder, die ich bisher über 


```
Button b = new Button(Settings.PATH + "/bild.png";
```

geladen habe, anpassen muss? Argh, das wäre ungut, das sind weit über 200..


----------



## Gast2 (16. Aug 2011)

SWTRelPath hat gesagt.:


> Danke Dir schonmal!!
> 
> Ich schaue mir das an, was Du mir empfohlen hast. Bedeutet das im Umkehrschluss (so meine erste Intention), dass ich alle Bilder, die ich bisher über
> 
> ...



Jop genau das heißt es, erst lesen bevor man etwas anffängt


----------

