Загрузка классов при расширении плагина 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 не может найти.