Почему мой плагин Eclipse хорошо запускается в одной рабочей области, а не в другой? - PullRequest
2 голосов
/ 06 марта 2011

Я создал плагин для Eclipse и экспортировал его как файл JAR. Я поместил его в каталог плагинов моего дистрибутива Eclipse RCP. Затем я открываю Eclipse и плагин функционирует, как и ожидалось. Я иду на другой компьютер и помещаю JAR в каталог плагинов дистрибутива Eclipse RCP, а затем открываю Eclipse.

В журнале ошибок появляются сообщения, подобные следующим:

  • Возникли проблемы при запуске плагина: "org.osgi.framework.BundleException: исключение в myplugin.Activator.start () комплекта MyPlugin"
  • Невозможно выполнить код раннего запуска для расширения
  • Неверное расширение спецификации
  • класс запуска должен реализовывать org.eclipse.ui.IStartup

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

public class Activator extends AbstractUIPlugin implements IStartup {...

Например, он четко реализует IStartup.

У кого-нибудь есть идеи о том, что здесь происходит, или, по крайней мере, в каком направлении я должен идти, чтобы решить эту проблему?

EDIT

Я теперь создал новый класс с именем StartupClass.java:

.
package myplugin;

import org.eclipse.ui.IStartup;

public class StartupClass implements IStartup {

@Override
public void earlyStartup() 
{

}
}

Затем я изменил свой plugin.xml, чтобы он выглядел так:

<extension point="org.eclipse.ui.startup">
<startup class="myplugin.StartupClass" />
</extension>

Что приводит к подобным ошибкам, таким как:

  • Произошла ошибка при автоматической активации пакета MyPlugin
  • Плагину MyPlugin не удалось загрузить класс myplugin.StartupClass
  • Невозможно выполнить код раннего запуска для расширения

1 Ответ

1 голос
/ 06 марта 2011

Есть ли у вас плагин org.eclipse.runtime.compatibilty в одном рабочем пространстве, но не в другом?

То, как вы это делаете, устарело, у вас должен быть отдельный класс «запуска» и указать его как class атрибут вашего <startup> элемента.

Из документов Eclipse в точке расширения запуска :

Не указывайте класс подключаемого модуля какзначение атрибута class, или он будет создан дважды (один раз при обычной активации плагина и один раз при помощи этого механизма).Если расширение не предоставляет класс в качестве атрибута элемента запуска, активатор плагина (класс плагина) должен реализовать org.eclipse.ui.IStartup.

Обратите внимание, что эта форма устарела ибольше не должен использоваться.Его функционирование зависит от доступности подключаемого модуля org.eclipse.core.runtime.compatibility и фрагмента org.eclipse.core.runtime.compatibility.registry.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...