Невозможно расширить CDT CEditor: «Иерархия типа '' несовместима»

При попытке написать класс, который расширяется, я получаю сообщение об ошибке:

The hierarchy of the type 'MYEditor' is inconsistent.

import org.eclipse.cdt.internal.ui.editor.CEditor;

public class MYEditor extends CEditor {

}

Этот ответ говорит:

These errors happened because some interface/class in the hierarchy cannot be resolved.

Это указывает на то, что eclipse не может найти класс в иерархии. Но когда я использую класс в своем plugin.xml, он работает. Я использую это так:

<editor
    class = "org.eclipse.cdt.internal.ui.editor.CEditor"
    contributorClass = "org.eclipse.cdt.internal.ui.editor.CEditorActionContributor"
    default = "true"
    filenames = "*.grasp, *.c"
    icon = "icons/small.png"
    id = "de.blub.ide.myeditor"
    name = "My Editor">
</editor>

Это работает, но не хватает нескольких функций, которые мне нужны для моего плагина. Вот почему я хочу использовать класс, наследуемый от CEditor.

Этот ответ не сработал (удалить и добавить системную библиотеку JRE).

Я также читал, что файл jar нужно поместить в раздел Classpath файла plugin.xml. Но кнопки «Добавить» и «Новый» не позволяют выбрать внешний файл jar. Я могу вручную скопировать этот jar-файл из «~/.p2/pool/plugins» в папку lib моих проектов, но это не помогло.

Обратите внимание, что расширение классов внутренний противоречит правилам — Правила взаимодействия с Eclipse API. Внутренние классы могут быть изменены без предупреждения.

greg-449 08.04.2019 09:48

Итак, что я могу сделать, чтобы добавить функциональность в CEditor?

Sadik 08.04.2019 10:12

Посмотрите на точки расширения, определенные для редактора.

greg-449 08.04.2019 10:32
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
44
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Плагины ссылаются на код других плагинов, включая их в свой список зависимостей. Это запись Require-Bundle в файле MANIFEST.MF плагина.

В редакторе MANIFEST.MF/plugin.xml/build.properties вы можете установить зависимости в разделе «Необходимые плагины» на странице «Зависимости».

Не копируйте jar-файлы плагинов, не помещайте jar-файлы плагинов в путь сборки Java.

Но обратите внимание, что расширение классов внутренний противоречит Правила взаимодействия с Eclipse API. Внутренние классы могут изменяться без предупреждения и могут быть другими в более старых версиях.

Руководство программиста подключаемых модулей CDT охватывает официальные API для Eclipse CDT.

org.eclipse.cdt.ui уже указан в разделе «Необходимые плагины». Одно это, похоже, не позволяет мне расширять CEditor.
Sadik 08.04.2019 13:25

Предполагая, что это плагин, содержащий редактор, больше ничего не требуется, если ваш плагин настроен правильно.

greg-449 08.04.2019 14:41

Что может быть неправильно настроено?

Sadik 08.04.2019 15:41

Дистанционно диагностировать проблемы с настройкой и сборкой очень сложно. Может быть, если вы покажете нам содержимое файлов .project, .classpath, META-INF/MANIFEST.MF, plugin.xml и build.properties плагина, кто-нибудь что-нибудь увидит.

greg-449 08.04.2019 16:12

Я не понимаю, зачем это нужно, ведь все остальное работает. build.properties не имеет записи, влияющей на cdt. В MANIFEST.MF есть запись для org.eclipse.cdt.ui в разделе «Require-Bundle». Возможно, не стоит расширять CEditor. Вроде бы и не предназначено.

Sadik 08.04.2019 16:25

Другие вопросы по теме