Bundle verzeichnis

lumo

Top Contributor
Hallo

ich habe bis jetzt immer versucht den pfad auszulesen indem ich folgende struktur gebaut hab.
ich hab im src einen folder images (indem ich eine klasse IMGROOT habe)
und dann hab ich noch einen resource folder images (wo die daten liegen)

bis jetzt hab ich dann imgroot.class.getclassloader etc angewandt um die bilder zu laden.
da das natürlich alles andere als nobel ist dachte ich mir dass ichs nun richte...

per
ClassLoader.getSystemResource(".")
hab ich das getestet (funktioniert super wenn ich meine klasse mit der eingenen main aufrufe)

nun muss ich meine bilder aber von einem anderen bunde aus anfragen, und bekomme nun bei oben genannter funktion keinen pfad sondern nur null zurück...

wie kann ich nun SAUBER den pfad von meinem images ordner ermitteln?

hoffe dass einer von euch einen guten rat hat!
 

@x.l

Bekanntes Mitglied
Ich glaube, dass wir schwierig. Und außerdem ist es doch recht ungünstig, wenn ein Bundle so stark von einem anderem abhängig gemacht wird. So sollte doch jedes Bundle seine eigenen Ressourcen mitbringen. Dann kannst du mittels des ImageDescriptors ganz einfach darauf zugreifen.
Java:
ImageData data = Activator.getImageDescriptor("/icons/pic.jpg").createImage().getImageData();

Obiges Bsp. geht davon aus, das der Ordner icons parallel zu src liegt.
 

lumo

Top Contributor
meine bundles haben keine Activators, brauch ich auch nicht...

das mit dem mitbringen der eigenen resources hab ich bereits mit einigen softwareentwicklern diskutiert.

es geht mir darum dass nicht zig resourcen doppelt und dreifach geladen werden, darum wird in meinem projekt jede resource in ein plugin geworfen, sodass alle 'aus einem napf fressen'
 

@x.l

Bekanntes Mitglied
Und wenn du die Ressourcen in ein bestimmtes Package ablegst, welches du dann exportierst?!
So müsste dieses Package ja dann für andere Bundles sichtbar sein und somit auch die Ressourcen.
 

code404

Aktives Mitglied
es geht mir darum dass nicht zig resourcen doppelt und dreifach geladen werden, darum wird in meinem projekt jede resource in ein plugin geworfen, sodass alle 'aus einem napf fressen'

Was einen hindert das so zu machen ist, dass diese Resourcen nur im programmatischen Teil deines Plugins verwendet werden können.
Wenn du aber z.B. Icons im plugin.xml verwenden willst, kannst du nur auf Resourcen zugreifen die im selben Plugin liegen.
 

Wildcard

Top Contributor
Mit AbstractUIPlugin.imageDescriptorFromPlugin kannst du auch ImageDescriptors für beliebige Bundles erzeugen lassen.
Für Shared Images bietet sich auch ein ISharedImages Interface an über das du die Pfade/ImageDescriptors bekommen kannst. Dieses Interface exportierst du dann einfach.
 

lumo

Top Contributor
hab das mit dem ImageDescriptor imageDescriptor = AbstractUIPlugin
.imageDescriptorFromPlugin(pluginId, fileName)
jetzt mal versucht, bekomme aber immer null zurück - ich gehe davon aus dass ich die falsche pluginId habe.

wo sollte ich die id finden?

wenn ich auf meine plugin.xml gehe (ich hab nur eine plugin.xml und zwar in meinem haupt-plugin)
dort steht unter ID ein string. wenn ich den eintrage bekomm ich noch immer ne nullpointerexception...

der pfad zur file sollte passen...

EDIT:

hab jetzt meinem hauptplugin noch einen activator hinzugefügt (ist zwar sinnlos aber...)
immer noch...
ImageDescriptor imageDescriptor = AbstractUIPlugin
.imageDescriptorFromPlugin(Activator.PLUGIN_ID, fileName);
-> NullPointerException
 
Zuletzt bearbeitet:

lumo

Top Contributor
Was einen hindert das so zu machen ist, dass diese Resourcen nur im programmatischen Teil deines Plugins verwendet werden können.
Wenn du aber z.B. Icons im plugin.xml verwenden willst, kannst du nur auf Resourcen zugreifen die im selben Plugin liegen.

die icons der plugin.xml sollen nicht das problem sein.
über den code kann man übrigens alle icons setzen, bis auf das des plugins selbst (wurde schon als bug submitted)
ausserdem stelle ich ein resource-plugin zur verfügung mit OSGi-Service über das man die resourcen bekommen kann -> programmiertechnisch ist das schon umgesetzt und funktioniert bestens
 

Wildcard

Top Contributor
hab jetzt meinem hauptplugin noch einen activator hinzugefügt (ist zwar sinnlos aber...)
immer noch...
ImageDescriptor imageDescriptor = AbstractUIPlugin
.imageDescriptorFromPlugin(Activator.PLUGIN_ID, fileName);
-> NullPointerException
Die ID muss die ID des Plugins sein das die Resource enthält. Und fileName ist nicht nur der Dateiname, sondern der Plugin relative Pfad zur Resource.
 

code404

Aktives Mitglied
die icons der plugin.xml sollen nicht das problem sein.
über den code kann man übrigens alle icons setzen, bis auf das des plugins selbst (wurde schon als bug submitted)
ausserdem stelle ich ein resource-plugin zur verfügung mit OSGi-Service über das man die resourcen bekommen kann -> programmiertechnisch ist das schon umgesetzt und funktioniert bestens

Wie machst du das aber wenn du z.B. deine Menüs u.s.w. über Commands festlegst?
 

lumo

Top Contributor
commands kann man auch per code schreiben
@wildcard - hatte ich, klappt nicht - habs jetzt so gelassen wies war - schade um die zeit, die für die kleinigkeit draufgeht.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T OSGi OSGI bundle bauen org.apache.xerces Plattformprogrammierung 3
H !MESSAGE Missing required bundle javax.mail_1.4.0. Plattformprogrammierung 5
G OSGi Bundle-ClassPath Plattformprogrammierung 3
F OSGi NPE bei deklarativen Bundle mit Maven SCR Plattformprogrammierung 2
G OSGi Ressourcen aus anderem Bundle laden Plattformprogrammierung 15
G RCP Datei im Bundle Plattformprogrammierung 6
A RCP RAP-Bundle nach Installation nicht auffindbar?! Plattformprogrammierung 5
A OSGi Bundle exportieren, importieren und vewenden geht nicht?! Plattformprogrammierung 4
lumo RCP The System Bundle was updated Plattformprogrammierung 13
A RCP p2 - manuelles update "check for updates" von core bundle funktioniert nicht Plattformprogrammierung 6
musiKk OSGi Bundle findet Activator nicht (ClassNotFoundException) Plattformprogrammierung 1
S OSGi Ablegen von Bundle-Eigenschaften (unabhängig) Plattformprogrammierung 4
L RCP Plugin als Bundle geklarieren? Plattformprogrammierung 3
O Bundle in Projekt-Dependencies nicht sichtbar Plattformprogrammierung 6
G [osgi] bundle spezifische properties Plattformprogrammierung 5
C RCP Applikation starten als OSGi Bundle Plattformprogrammierung 2
B OSGi, Euqinox, innherhalb vom Bundle Pfad des zugehörigen jar-files ermitteln Plattformprogrammierung 6
N bundle und classpath Plattformprogrammierung 12
S Verschieben des Verzeichnis .eclipse aus Userprofile Plattformprogrammierung 3
F Verzeichnis mit Xpand erstellen Plattformprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben