Доступ к плагинам из фрагментов и наоборот
Я пытаюсь добавить фрагмент в плагин, чтобы добавить информацию в плагин, не касаясь последнего.
Однако проблема, с которой я столкнулся, заключается в том, что я могу получить доступ к ресурсам, которые находятся в плагине из фрагмента, но не наоборот.
Вот как я выбираю ресурс и манифесты обоих проектов. Файл ресурса "patch.xml" находится в папке /src.
test.plugin2:
основной класс:
public class Main{
public static void main(String[] args) {
RetrieveResource ma = new RetrieveResource();
ma.retrieve();
}
}
RetrieveResource:
public class RetrieveResource {
public RetrieveResource(){
}
public void retrieve(){
URL url = this.getClass().getClassLoader().getResource("patch.xml");
System.out.println(url);
}
}
URL всегда нулевой.
manifest.mf:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Plugin2
Bundle-SymbolicName: test.plugin2;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Require-Bundle: org.eclipse.core.runtime;bundle-version="3.7.0"
build.properties
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
test.fragment2:
manifest.mf
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Fragment2
Bundle-SymbolicName: test.fragment2
Bundle-Version: 1.0.0.qualifier
Fragment-Host: test.plugin2;bundle-version="1.0.0.qualifier"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Export-Package: test.fragment2.classes
build.properties
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
.,\
Чего не хватает или где я ошибся?
Можно ли получить доступ к фрагментам из плагинов?
ПРОБЛЕМА РЕШЕНА: В своих тестах я запускал проект test.plugin2, как в режиме "Java-приложения". Поскольку фрагмент и плагин должны быть объединены во время выполнения, приложение должно быть запущено в режиме "приложения затмения", и при загрузке ресурса не возникнет проблем.
1 ответ
Использование FileLocator.find
(в org.eclipse.core.runtime
) искать ресурсы в плагине и его фрагментах.
Bundle bundle = ... your plugin Bundle
IPath path = new Path("patch.xml");
URL url = FileLocator.find(bundle, path, null);