Ecilpse plugin und MWE Workflow: classpath Problem

  • Themenstarter Themenstarter Finwe8
  • Beginndatum Beginndatum
F

Finwe8

Gast
Hallo,
ich habe folgendes Problem.
Ich möchte mit einem MWE Workflow ein Xpand Template anstoßen.
Das ganze soll in einem Eclipse Plugin laufen.
Solange wie ich das ganze in meinem Eclipse Projekt ausführe gibt es kein Problem.
Sobald ich das ganze als Plugin laufen lasse bekomme ich folgende Exception:

"Missing required plugin 'org.eclipse.uml2.uml.resources' in classpath!"

Die entsprechende dependencie ist natürlich gesetzt.

Ich habe gegoogelt ud eine Lösung gefunden, bei der ich folgende Zeile in meinem Manifest.mf einfügen soll:
Fragment-Host: org.eclipse.uml2.uml.resources;bundle-version="3.0.0"

Füge ich diese ein bekomme ich allerdings Fehlermeldungen in meiner Manifest.mf.

Daher meine Frage, wo/wie soll ich diese Zeile einfügen?
Gibt es ggf. andere Lösungen?

---------------------------------------------------------
Meine Manifest.mf:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Fracc
Bundle-SymbolicName: org.eclipse.fracc;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Vendor: Johann Frerik Koch
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Require-Bundle: org.eclipse.ui,
org.eclipse.core.resources;bundle-version="3.5.2",
org.eclipse.core.runtime;bundle-version="3.5.0",
org.eclipse.emf.mwe.core;bundle-version="0.7.2",
org.eclipse.xtend.typesystem.uml2;bundle-version="0.7.2",
org.eclipse.xtend.typesystem.emf;bundle-version="0.7.2",
org.eclipse.emf.mwe.utils;bundle-version="0.7.2",
org.eclipse.xpand;bundle-version="0.7.2",
org.eclipse.xtend;bundle-version="0.7.2",
org.antlr.runtime;bundle-version="3.0.0",
com.ibm.icu;bundle-version="4.0.1"
Export-Package: plugin;uses:="org.eclipse.jface.action,org.eclipse.ui,org.eclipse.jface.viewers",
templates
------------------------------------------------

Ich nutze Eclipse 2.5.2 Galileo.

Ich hoffe ihr könnt mir weiterhelfen.
 
Hallo,
ich habe folgendes Problem.
Ich möchte mit einem MWE Workflow ein Xpand Template anstoßen.
Das ganze soll in einem Eclipse Plugin laufen.
Solange wie ich das ganze in meinem Eclipse Projekt ausführe gibt es kein Problem.
Sobald ich das ganze als Plugin laufen lasse bekomme ich folgende Exception:

Wie lässt du es als Plugin laufen?
Du musst in deinem META-INF.Manifest.mf nur die entsprechenden Plugins hinzufügen. Am besten über die GUI wenn du das File öffnest.

Wie hast du es mit einem Eclipse Projekt gemacht? Wo hast du die libs hingesteckt?

Ich nutze Eclipse 2.5.2 Galileo.

Puh 2.5.2 wird schwer 😉
 
Zuletzt bearbeitet von einem Moderator:
Ah ich meinte natürlich 3.5.2 -.- sorry Tippfehler.

Vieleicht zu ergänzen das ganze ist ein PDE Projekt.

Wie lässt du es als Plugin laufen?
Ich lasse es über Run->Eclipse Application laufen.

Du musst in deinem META-INF.Manifest.mf nur die entsprechenden Plugins hinzufügen. Am besten über die GUI wenn du das File öffnest.
Wie gesagt unter Dependencies ist das Plugin zu dem "org.eclipse.uml2.uml.resources" gehört eingetragen, das habe ich über den Mainfest.mf editor gemacht.

Wo hast du die libs hingesteckt?
Die libs stehen in der "Plug-in Dependencie" Bibliothek, die mir PDE automatisch generiert. Dort ist auch "org.eclipse.uml2.uml.resources" aufgeführt. Also eigentlich muss es auf dem classpath sein! Daher versteh ich den Fehler auch nicht 😉

Wie hast du es mit einem Eclipse Projekt gemacht?
Meinst du laufen lassen? Worklow ausgewählt und Run-> MWE worklfow.
 
Ich verstehe gar nicht so recht was du vor hast.

Du willst deine Codegenerierung über ein eigenes Plugin anstoßen?
Und nicht über die IDE? Was soll der sinn davons ein?

Ich kenne es bis jetzt so du machst ein Eclipse Plugin-->fügst deine Dependencies ein-->machst ein mwe File--> und dann kannst du das über Run-As ausführen.
 
Entweder es ist ein Fragment (-Bundle), oder ein Bundle.
Fragmente kann man nicht starten 😉
 
Danke für die antworten schonmal aber ich fang einfach nochmal von vorne an. Ich glaube ich habe mein Problem noch nicht verständlich rübergebracht.

Ich schreibe ein Plugin. Das ganze ist ein Eclipse Plugin Projekt, das immoment eine Aktion zum context Menu von IFiles hinzufügt. Das läuft über den ExtensionPoint org.eclipse.ui.popupMenu.

Die Projetk Sturktur sieht folgendermaßen aus:

Projekt
JRE System Libary
PluginDependencies
src
plugin
einige Java klassen
My.uml
workflowFile.mwe
META-inf
Mainfest.mf


Wird die Aktion ausgeführt wird folgender Code getriggert:

Java:
 Map<String,String> properties = new HashMap<String,String>();
		properties.put("fileLocation", fileLocation);
		properties.put("outletPath", outletPath);
		Map<String,Object> slotContents = new HashMap<String,Object>();
		
		WorkflowRunner wfRunner = new WorkflowRunner();
		wfRunner.run(wfFile, new NullProgressMonitor(), properties,slotContents );

Der Workflow macht nichts anderes als mein XPAND Template mit einer uml Datei zu füttern. Und das ganze auszuführen.

Workflow:
---------------------------------------------------------------------------
<?xml version="1.0" encoding="ISO-8859-1"?>
<workflow>

<bean class="org.eclipse.xtend.typesystem.uml2.Setup" standardUML2Setup="true"/>
<component class="org.eclipse.xtend.typesystem.emf.XmiReader">
<modelFile value="${fileLocation}"/>
<outputSlot value="model"/>
</component>

<component id="generator" class="org.eclipse.xpand2.Generator">

<metaModel class="org.eclipse.xtend.typesystem.uml2.UML2MetaModel"/>
<expand value="templates::Root::Root FOR model"/>
<fileEncoding value="ISO-8859-1"/>
<outlet path="${outletPath}">
</outlet>
</component>
</workflow>

---------------------------------------------------------

Folgender Anwenungsfall:
Ich starte den workflow über "selektieren der Workflowfile" -> RunAs -> MWE workflow.
Das funktioniert. Die gewünschte Ausgabe wird erzeugt.

Zweiter Anwendungsfall:
Ich starte das Plugin über "projekt selektieren" -> RunAs-> Eclipse Application.
In der neuen Eclipse Application starte ich die Aktion.
Daraufhin bekomme ich die Fehlermeldung: "Missing required plugin 'org.eclipse.uml2.uml.resources' in classpath."

Der Punkt ist!!! 'org.eclipse.uml2.uml.resources' befindet sich in der Plug-in Dependencies Bibliothek und ist auch unter Dependencies in der Manifest.mf eingetragen.

So und jetzt nochmal zu dem Fragment:
Die oben geschriebene Frgament-Host zeile soll eine Lösung zu genau diesem Problem sein. Das Problem ist nur das ich sie nicht in meine Manifest.mf eintragen kann, da diese dann Fehlermeldungen anzeigt.

Daher wollte ich wissen, ob/wie ich diese zeile eintrage bzw. was es sonst noch für Lösungsansätze gibt.
 
Ich verstehe gar nicht so recht was du vor hast.

Du willst deine Codegenerierung über ein eigenes Plugin anstoßen?
Und nicht über die IDE? Was soll der sinn davons ein?

Ich kenne es bis jetzt so du machst ein Eclipse Plugin-->fügst deine Dependencies ein-->machst ein mwe File--> und dann kannst du das über Run-As ausführen.

Die Idee ist recht simple. Ich kann, wenn das Plugin in Eclipse integriert ist einfach auf die Modelfile Rechtsklicken und Code Generieren klicken und das aus jedem Projekt.

Ansonten müsste ein Nutzer jedesmal ein entsprechendes Projekt erstellen, den workflow reinkopieren, das template reinkopieren, die nötigen Dependencies setzen und kann dann erst generieren... verstehst du was ich meine?
 
Die oben geschriebene Frgament-Host zeile soll eine Lösung zu genau diesem Problem sein. Das Problem ist nur das ich sie nicht in meine Manifest.mf eintragen kann, da diese dann Fehlermeldungen anzeigt.
Wie gesagt, entweder es ist ein Bundle(Plugin), oder ein Fragment, beides geht nicht.
 
Alles klar.
Dann hilft mir die "google Lösung" nicht.
Kann mir jemand eine andere Hilfe geben?
 
Schon mal addRequired Bundle gemacht?

Hast du ein Feature-Project?Da muss die dependencie auch hinein.
 
---------------------------------------------------------
Meine Manifest.mf:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Fracc
Bundle-SymbolicName: org.eclipse.fracc;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Vendor: Johann Frerik Koch
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Require-Bundle: org.eclipse.ui,
org.eclipse.core.resources;bundle-version="3.5.2",
org.eclipse.core.runtime;bundle-version="3.5.0",
org.eclipse.emf.mwe.core;bundle-version="0.7.2",
org.eclipse.xtend.typesystem.uml2;bundle-version="0.7.2",
org.eclipse.xtend.typesystem.emf;bundle-version="0.7.2",
org.eclipse.emf.mwe.utils;bundle-version="0.7.2",
org.eclipse.xpand;bundle-version="0.7.2",
org.eclipse.xtend;bundle-version="0.7.2",
org.antlr.runtime;bundle-version="3.0.0",
com.ibm.icu;bundle-version="4.0.1"


Übrigens hier sehe ich kein 'org.eclipse.uml2.uml.resources' als require Bundle.
 
Auch das hilft leider nicht.
Da ich momentan keine Zeit mehr für das Projekt habe lege ich das ganze jetzt erstmal auf Eis.
Vielen dank für eure Hilfe!
 

Zurück
Oben