Hallo,
ich habe ein Plugin geschrieben mit dem ich auf einem anderen Projekt von mir zugreife. In diesem Projekt gibt es Propertie dateien auf die ich mit einer Klasse zugreife indem ich die getResourceAsStream methode benutze. Aber diese Propertie-Datei in dem anderen Projekt wird nicht gefunden, obwohl es vorhanden ist. Von anderen nicht-plugin-projekten kann ich auch darauf zugreifen. Wieso kann ich denn das nicht von meinem Plugin-Projekt aus tun? Weiss einer bescheid ?
swingman
Moin
Wieso kann ich denn das nicht
von meinem Plugin-Projekt aus tun?
Class.getResourceAsStream nimmt die jar/Verzeichniss aus der Class stammt als Referenzepunkt und sucht von da an. D.h. wenn du Class.forName („zentrale-klasse-aus-dem-project“).getResourceAsStream (properties) aufrufst sollte es gehen.
cu
was meinst Du mit „zentrale-klasse-aus-dem-project“ ? kannst Du es bisschen erläutern:
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Moin
was meinst Du mit „zentrale-klasse-aus-dem-project“ ? kannst
Du es bisschen erläutern:
In diesem Projekt gibt es Propertie dateien auf die ich
mit einer Klasse zugreife indem ich die getResourceAsStream
methode benutze.
Nimm die mit der es im Project selbst funktioniert. Oder erklär wie deine Plugins und das Hauptprojekt gespeichert sind und wie die Plugins geladen werden.
cu
Ich versuche mein Subprojekt in form eines Jar-Files in mein Plugin einzubinden. Die Klassen werden auch gefunden, aber aus irgendwelchen Gründen die ich nicht verstehe werden Propertie-Dateien nicht gefunden.
Ich habe in meinem Subprojekt eine eigene Classloader Klasse von der ich die Resourcen lade. Dieser Classloader funktioniert normalerweise auch wunderbar, aber von dem Plugin aus kann es auf einmal die Resourcen nicht finden.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Moin
Ich habe in meinem Subprojekt eine eigene Classloader Klasse
von der ich die Resourcen lade. Dieser Classloader
funktioniert normalerweise auch wunderbar, aber von dem Plugin
aus kann es auf einmal die Resourcen nicht finden.
Der Classloader wird aus der Plugin-Jar geladen. Damit kommt der Classloader für die JVM von der Plugin-Jar. Jede Klasse die durch diesen Classloader erzeugt wurde ist mit ihm verknüft. Die Klassen kommen also für die JVM auch aus den Plugin-Jar.
Wenn nun auf eine dieser Klassen oder dieser Classloader nach der Properties Datei sucht dann wird nur die Plugin-Jar durchsucht. Um an die Projekt Dateien ranzukommen muss eine Klasse die NICHT aus der Plugin-Jar stammt die Suche machen.
cu
Im Grunde habe ich das verstanden was Du sagen möchtest. Aber die Suche wird ja eigentlich von diesem Classloader in der angehängten Jar-Datei durchsucht oder nicht. Und wie sollte dann die Suche aussehen, wenn ich das wie Du sagst mit einer Klasse die Suche machen muss die NICHT aus der Plugin-Jar stammt?
Kannst Du es bisschen erläutern und vieleicht bisschen Codebeispiele usw.
Und danke für die Unterstützung.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]