2017-09-28 2 views
0

Ich lerne rcp Entwicklung, und derzeit versuche ich einige SWT Widgets in eine e4 RCP App zu importieren, aber ich habe Probleme.Hinzufügen von Gläsern in einer RCP-App über ein externes Eclipse-Projekt

Ich habe Gläser für die XYGraph-Komponente here gefunden, und aus dem Tutorial von Lars Vogel, habe ich gelernt, einige Gläser in einer RCP-App zu importieren: Ich habe ein "Projekt aus Gläsern" in Eclipse, in dem ich alle Gläser gesetzt (nicht nur die oben genannten, sondern auch andere aus dem Nebelprojekt, aber es hängt nicht mit dem Problem zusammen, das ich bekomme). dann habe ich das Plugin-Projekt mit den Gläsern in der Manifest-Datei meiner RCP-App (auf der Registerkarte Abhängigkeiten) hinzugefügt. Danach habe ich die richtigen "Import" -Anweisungen in meine Teildatei hinzugefügt, und alles sollte gut sein ... aber ich erhalte diesen Fehler beim Start der RCP-App (aus der Produktdatei): java.lang.NoClassDefFoundError: org/eclipse/Draw2d/IFigure an der Linie 51

hier ist mir RCP @PostConstruct Datei: ein Pfeil zeigt die Linie 51

@PostConstruct 
public void postConstruct(Composite parent) { 
    parent.setLayout(new FillLayout(SWT.HORIZONTAL)); 

    Canvas canvas = new Canvas(parent, SWT.NONE); 

    LightweightSystem lws = new LightweightSystem(canvas); 


    // create a new XY Graph. 
    XYGraph xyGraph = new XYGraph(); <---- line 51 
    xyGraph.setTitle("Simple Example"); 
    // set it as the content of LightwightSystem 
    lws.setContents(xyGraph); 

    // create a trace data provider, which will provide the data to the 
    // trace. 
    CircularBufferDataProvider traceDataProvider = new CircularBufferDataProvider(
      false); 
    traceDataProvider.setBufferSize(100); 
    traceDataProvider.setCurrentXDataArray(new double[] { 10, 23, 34, 45, 
      56, 78, 88, 99 }); 
    traceDataProvider.setCurrentYDataArray(new double[] { 11, 44, 55, 45, 
      88, 98, 52, 23 }); 

    // create the trace 
    Trace trace = new Trace("Trace1-XY Plot", xyGraph.primaryXAxis, 
      xyGraph.primaryYAxis, traceDataProvider); 

    // set trace property 
    trace.setPointStyle(PointStyle.XCROSS); 

    // add the trace to xyGraph 
    xyGraph.addTrace(trace); 
} 

haben Sie eine Vorstellung über den Ursprung dieser Fehler haben?

EDIT: hier sind alle vier Dateien:

NebulaJars (jars plugin): MANIFEST.MF 
https://paste.ofcode.org/mchNUQdCpGde3Tf2yKp8Qr 
NebulaJars (jars plugin): build.properties 
https://paste.ofcode.org/J6UHffTrjvGfWvHSqunQks 
RCP project: 
MANIFEST.MF 
https://paste.ofcode.org/hR7ZkU85qXAqBPjTam53nV 
build.properties 
https://paste.ofcode.org/DWEc8SV9U85rHMKk4Eb9X3 

EDIT 2: enter image description here

+0

Haben Sie hinzugefügt, um das Plugin diese Gläser auf Ihre Plugins Abhängigkeiten enthalten? Haben Sie die Pakete im Plugin mit den Gläsern exportiert? Zeige uns die MANIFEST.MF und build.properties für beide Plugins. –

Antwort

0

Haben Sie die entsprechenden exportierten Pakete in Runtime-Registerkarte der Manifest-Datei für XYGraph erstellt werden (und andere ...) Plugin?

EDIT 1: Versuchen Sie, Ihre Plugins aus Ihrer Startkonfiguration zu optimieren. Sie können die Startkonfiguration über das Menü Run-> Run Configurations ... aufrufen. Überprüfen Sie, ob Ihre Plugin-Konfiguration gültig ist.

enter image description here

+0

hallo, ich habe das korrigiert: Ich habe das richtige Glas im Netz gefunden und dieses zum Jars-Plugin hinzugefügt (unter Verwendung deines Hinweises) und ... Ich habe andere Fehler, nicht erkannt: das letzte ist: "org.eclipse.e4 .core.di.InjectionException: java.lang.NoClassDefFoundError: org/eclipse/jface/resource/ColorRegistry ", obwohl die korrekte Klasse in den" Plugin-Abhängigkeiten "meines RCP-Projekts enthalten ist. Ich verstehe nicht, warum solche Klassen nicht im Klassenpfad sind – lolveley

+0

Ich habe "org.eclipse.jface" in den Abhängigkeiten meiner Manifest-Datei – lolveley

+0

Ich meine das Manifest des rcp-Projekts – lolveley

Verwandte Themen