Ich verwende derzeit eine Java-Anwendung, die mit Eclipse und RCP entwickelt wurde; Diese Anwendung verfügt über wenige Plugin-Dateien im JAR-Format. Diese Dateien enthalten spezielle Prozeduren für die Erstellung von Preislisten.Java RCP: Erstelle Erweiterungspunkt von bestehender Erweiterung
Ich muss eine völlig neue Anwendung entwickeln, die die vorhandenen Erweiterungen verwendet, um neue Preisliste zu erstellen, also habe ich ein neues Plug-in-Projekt erstellt und ich habe versucht, den Erweiterungspunkt kompatibel mit meinen vorhandenen Erweiterungen zu erstellen.
Das Problem ist, ich bin überhaupt nicht alle Experten mit RCP, so machte ich sicher einige Fehler: wenn ich versuche, mit diesem um die Erweiterung zu bekommen:
IExtensionRegistry reg = Platform.getExtensionRegistry();
IConfigurationElement[] extensions =
reg.getConfigurationElementsFor("prices.year");
for (int i = 0; i < extensions.length; i++) {
if(extensions[i].getName().equals("2016")) {
// Do something
}
}
ich immer 0 Elemente erhalten.
Also sicher habe ich einen Fehler gemacht beim Erstellen des Erweiterungspunkts oder wenn ich die verfügbare Erweiterung hinzugefügt habe ... oder beides!
Eigentlich: - ich die JAR-Dateien in meinem Projekt hinzugefügt, enthalten dann in der Build-Konfiguration - Ich habe die Erweiterung Punkt - ich die .exsd Datei öffnen, ein „Client“ Element mit einer „Klasse“ hinzugefügt Attribut; diese Klasse „Implementiert“ Feldpunkte auf ein Objekt in einer jar-Klasse definiert (das gleiche Objekt wird in der Plugin-Datei implementiert) Innerhalb der Plugin-Datei (.jar) Ich habe diese:
public class Pricelist2017 extends Pricelist
implements IPricedata
{
...
-
EDIT: nach greg-449 Vorschlag Anwendung, jetzt bin ich in der Lage etwas Verlängerung zu bekommen, aber ich Problem konfrontiert, wenn ich versuche, auf sie zuzugreifen:
IExtensionRegistry reg = Platform.getExtensionRegistry();
IConfigurationElement[] extensions = reg.getConfigurationElementsFor("prices.year");
for (int i = 0; i < extensions.length; i++) {
System.out.println(extension[i].getName());
System.out.println(extension[i].getAttribute("id"));
System.out.println(extension[i].toString());
}
I (für 2 extensio bekommen ns gefunden):
client
null
[email protected]
client
null
[email protected]
Ich vermisse etwas anderes, aber es ist schwierig zu finden, wo zu berühren. Vielen Dank im Voraus für Ihre Hilfe!
Großartig. Es klappt! Also muss ich unbedingt im Voraus wissen, wie viele Klassen IPricedata implementieren und dann einzeln hinzufügen? (tatsächlich habe ich einige hundert Klassen, die IPricedata implementieren, jeder mit anderen Attributen und ich muss sie programmgesteuert auswählen) – Scare
Ja, Sie müssen eine Erweiterung für jede Klasse erstellen, um dies mit Erweiterungspunkten zu tun. –