# Ecilpse plugin und MWE Workflow: classpath Problem



## Finwe8 (10. Mai 2011)

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.


----------



## Gast2 (10. Mai 2011)

Finwe8 hat gesagt.:


> 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.
> ...



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?



Finwe8 hat gesagt.:


> Ich nutze Eclipse 2.5.2 Galileo.



Puh 2.5.2 wird schwer


----------



## Finwe8 (10. Mai 2011)

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.


----------



## Gast2 (10. Mai 2011)

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.


----------



## maki (10. Mai 2011)

Entweder es ist ein Fragment (-Bundle), oder ein Bundle.
Fragmente kann man nicht starten


----------



## Finwe8 (10. Mai 2011)

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: 


```
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.


----------



## Finwe8 (10. Mai 2011)

> 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?
> ...



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?


----------



## maki (10. Mai 2011)

> 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.


----------



## Finwe8 (10. Mai 2011)

Alles klar. 
Dann hilft mir die "google Lösung" nicht.
Kann mir jemand eine andere Hilfe geben?


----------



## Gast2 (10. Mai 2011)

Schon mal addRequired Bundle gemacht?

Hast du ein Feature-Project?Da muss die dependencie auch hinein.


----------



## Gast2 (10. Mai 2011)

Finwe8 hat gesagt.:


> ---------------------------------------------------------
> Meine Manifest.mf:
> 
> Manifest-Version: 1.0
> ...




Übrigens hier sehe ich kein 'org.eclipse.uml2.uml.resources' als require Bundle.


----------



## Finwe8 (13. Mai 2011)

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!


----------



## Gast2 (13. Mai 2011)

Finwe8 hat gesagt.:


> 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!



Ja wie gesagt wenn du es nicht in dein Manifest mitaufnimmst wird das auch nichts  siehe Post oben.


----------

