Загрузка классов при расширении плагина Eclipse с фрагментным проектом не работает

Я пытаюсь расширить сторонний плагин Eclipse, используя фрагмент проекта. Основная причина в том, что сторонний плагин содержит классы, имеющие модификатор по умолчанию (пакет), и мне нужно их расширить.

Таким образом, мой класс расширений должен находиться в одном пакете. Я создаю проект фрагмента, содержащий тот же пакет, и помещаю в него свой класс. Все работает нормально, когда я использую рабочее пространство во время выполнения.

Однако если я попытаюсь развернуть свой фрагмент (например, развернуть его в папке dropins моего дистрибутива Eclipse), я не смогу выполнить код. Расширения и тому подобное работают нормально (например, я использую расширения для новой конфигурации запуска. Однако, если я пытаюсь создать экземпляр этой конфигурации запуска, я получаю сообщение об ошибке, что стороннему корневому плагину не удалось загрузить класс в отобразить мою группу вкладок конфигурации.

Есть опыт с такими проблемами?

3 ответа

Извините, но это не работает. Если хост-пакет не был специально создан для него, вы не можете переопределить класс в хосте из фрагмента. Причина в том, что ресурсы - включая классы - извлекаются из хоста перед любым фрагментом.

Увидеть org.eclipse.osgi.baseadaptor.loader.ClasspathManager для реализации..

На самом деле я нашел проблему сейчас для себя. Проблема была в неверно настроенном файле свойств сборки, который исключил байт-код Java из моего фрагмента JAR. Очень зудит, поскольку классы были в JAR, но в неправильном подкаталоге.

На самом деле, это код расширения, который я использую:

<extension point="org.eclipse.debug.ui.launchConfigurationTabGroups">
  <launchConfigurationTabGroup
    class="com.android.ide.eclipse.adt.internal.launch.jouleunit.AndroidJouleUnitTabGroup"
    id="com.android.ide.eclipse.adt.jouleunit.AndroidJouleUnitLaunchConfigTabGroup"
    type="com.android.ide.eclipse.adt.jouleunit.launchConfigurationType">
  </launchConfigurationTabGroup>

Конечно, существуют дополнительные расширения, определяющие тип конфигурации запуска и т. Д., Но это то, что ведет к классу, который Eclipse не может найти.

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