Вы можете определить точку расширения и искать / вызывать ваши фрагменты классов через расширения.
IExtensionRegistry registry = Platform.getExtensionRegistry();
IExtensionPoint extensionPoint = registry
.getExtensionPoint("myplugin.myextension");
IConfigurationElement points[] = extensionPoint
.getConfigurationElements();
for (IConfigurationElement point : points) {
if ("myextensionFactory".equals(point.getName())) {
Object impl = point.createExecutableExtension("class");
if (impl instanceof IMyExtension) {
((IMyExtension) impl).foo();
}
}
}
}
EDIT:
Чтобы использовать этот подход, я должен преобразовать
мои фрагменты проектов для плагина
проекты. - bmatthews68
Тебе не нужно было. Например, в моем тестовом коде у меня есть следующие файлы в плагине хоста:
META-INF / MANIFEST.MF
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Myplugin Plug-in
Bundle-SymbolicName: myplugin;singleton:=true
Bundle-Version: 1.0.0
Bundle-Activator: myplugin.Activator
Require-Bundle: org.eclipse.core.runtime
Eclipse-LazyStart: true
Export-Package: myplugin
plugin.xml
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<plugin>
<extension-point id="myextension" name="myextension"
schema="schema/myextension.exsd" />
</plugin>
Фрагмент содержит следующие файлы:
META-INF / MANIFEST.MF
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Myfragment Fragment
Bundle-SymbolicName: myfragment;singleton:=true
Bundle-Version: 1.0.0
Fragment-Host: myplugin;bundle-version="1.0.0"
fragment.xml
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<fragment>
<extension
point="myplugin.myextension">
<myextensionFactory
class="myfragment.MyExtension1">
</myextensionFactory>
</extension>
</fragment>
Эти проекты были созданы с использованием Eclipse 3.3.1.1.