You are right because EMF think is running in a Eclipse environment. We have integrate EMF with Virgo following the next steps:
- Create a bundle wrapper with a folder named lib and put into this folder the EMF jars. In our case, we put the libraries: org.eclipse.emf.common-2.7.0.v20110128-1409.jar, org.eclipse.emf.ecore-2.7.0.v20110128-1409.jar and org.eclipse.emf.ecore.xmi-2.6.0.v20110126-1727.jar
- Add these libraries in your bundle classpath in MANIFEST.MF
- Re-export the EMF packages in your MANIFEST.MF
Create an Activator class and set the registry. The code is:
@Override public void start(BundleContext arg0) throws Exception { Properties props = System.getProperties(); props.setProperty("org.eclipse.emf.ecore.EPackage.Registry.INSTANCE", "org.eclipse.emf.ecore.impl.EPackageRegistryImpl"); } @Override public void stop(BundleContext arg0) throws Exception { Properties props = System.getProperties(); props.remove("org.eclipse.emf.ecore.impl.EPackageRegistryImpl"); }
Finally, the MANIFEST.MF would be something like that:
Manifest-Version: 1.0
Bundle-Version: 2.7.0
Bundle-Name: EMF-Wrapper
Bundle-ManifestVersion: 2
Bundle-SymbolicName: emf-wrapper
Bundle-ClassPath: .,
lib/org.eclipse.emf.common-2.7.0.v20110128-1409.jar,
lib/org.eclipse.emf.ecore-2.7.0.v20110128-1409.jar,
lib/org.eclipse.emf.ecore.xmi-2.6.0.v20110126-1727.jar
Export-Package: your.activator.package,
org.eclipse.emf.common;version="2.7.0.v20110128-1409",
org.eclipse.emf.common.archive;version="2.7.0.v20110128-1409",
org.eclipse.emf.common.notify;version="2.7.0.v20110128-1409",
org.eclipse.emf.common.notify.impl;version="2.7.0.v20110128-1409",
org.eclipse.emf.common.util;version="2.7.0.v20110128-1409",
org.eclipse.emf.ecore;version="2.7.0.v20110128-1409",
org.eclipse.emf.ecore.impl;version="2.7.0.v20110128-1409",
org.eclipse.emf.ecore.plugin;version="2.7.0.v20110128-1409",
org.eclipse.emf.ecore.resource;version="2.7.0.v20110128-1409",
org.eclipse.emf.ecore.resource.impl;version="2.7.0.v20110128-1409",
org.eclipse.emf.ecore.util;version="2.7.0.v20110128-1409",
org.eclipse.emf.ecore.xmi;version="2.6.0.v20110126-1727",
org.eclipse.emf.ecore.xmi.impl;version="2.6.0.v20110126-1727",
org.eclipse.emf.ecore.xmi.util;version="2.6.0.v20110126-1727",
org.eclipse.emf.ecore.xml.namespace;version="2.7.0.v20110128-1409",
org.eclipse.emf.ecore.xml.type;version="2.7.0.v20110128-1409",
org.eclipse.emf.ecore.xml.type.internal;version="2.7.0.v20110128-1409",
org.eclipse.emf.ecore.xml.type.util;version="2.7.0.v20110128-1409"
Bundle-Activator: your.activator.package.Activator
Import-Package: org.osgi.framework;version="[1.7.0,1.7.0]"