Как получить Bundle-SymbolicName из IProject?

#java #eclipse #eclipse-plugin

#java #eclipse #eclipse-плагин

Вопрос:

Я пишу мастер для проекта eclipse и хочу включить другой плагин как Require-Bundle в Manifest.MF .

У меня есть то, IProject что я хочу включить, могу ли я получить к нему доступ, Bundle-SymbolicName не разбирая Manifest.MF ? Или есть другие способы избежать ручного синтаксического анализа?

Ответ №1:

IProject Может не представлять подключаемый модуль и не иметь прямого API для получения идентификатора подключаемого модуля.

Вы можете использовать обычный класс Java Manifest для просмотра МАНИФЕСТА.MF, используя что-то вроде:

 IProject project = ...

IFile manifestResource = project.getFile(new Path("META-INF/MANIFEST.MF"));
if (manifestResource.exists()) {
    try (InputStream stream = manifestResource.getContents()) {
        Manifest manifest = new Manifest();
        manifest.read(stream);

        String symbolicName = manifest.getMainAttributes().getValue("Bundle-SymbolicName");
    } catch (CoreException | IOException ex) {
       ...
    }
}
  

Этот код адаптирован из кода, используемого Eclipse PDE для поиска подключаемого модуля.