2012-06-06 6 views
1

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

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

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

опыт работы с такого рода проблемами?

ответ

1

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

См. org.eclipse.osgi.baseadaptor.loader.ClasspathManager для реализации.

+0

На самом деле, я не хочу переопределять класс, я просто хочу добавить дополнительные классы в путь к плагину. Я думал, это должно быть возможно, используя фрагменты. Как я уже сказал, он действительно работает до тех пор, пока я не пытаюсь развернуть мой фрагмент как JAR и запустить фрагмент в рабочей области времени исполнения. –

+0

И это действительно возможно! И одно из основных применений фрагментов :-) –

+0

Хорошо, так почему же в моем случае я получаю ClassNotFoundException? Плохая вещь в том, что я даже не получаю трассировку стека для своей проблемы. Я просто получаю сообщение ErrorDialog с сообщением, и журнал ошибок остается пустым. Что я точно делаю, так это то, что я регистрирую новую конфигурацию запуска через расширение Eclipse, и эта проблема возникает, когда я пытаюсь создать экземпляр этой конфигурации запуска. Возможно, это проблема в реализации точки расширения или я что-то упустил? –

0

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

<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> 

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

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^