Вопрос

Я пытаюсь создать простой плагин в eclipse.Когда я запускаю приложение, я вижу эту ошибку в файле журнала:

org.osgi.framework.Исключение BundleException :Активатор для пакета org.x.y.Активатор для пакета org.x.y недействителен.

Есть ли у вас какие-либо представления об этой ошибке?

Это было полезно?

Решение

Проверьте свой build.properties Раздел

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


От Зона затмения, еще одна причина этого сообщения об ошибке:

Если вы видите в журнале сообщение, подобное

 The activator org.example.FooActivator for bundle org.example.foo is invalid 

, то это обычно означает , что произошел ClassNotFoundException пытаюсь загрузить класс в первую очередь, еще до того, как он доберется до метода start().


пенгуру добавляет:

Ошибка возникает, когда я пытаюсь создать новый объект из любого другого класса в конструкторе класса activator.Разве не законно создавать объект в плагине activator ?

  • Если этот класс, если из другого плагина, который еще не был "активирован", это может быть вашей проблемой.
  • Если этот класс не найден, это также приведет к аннулированию вашего активатора плагина.

Основные рекомендации:возможно, вам будет лучше, если ваши инициализации будут выполнены в start() способ из Activator а не его конструктор.

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

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

После изменения пути к классу попробуйте очистить, перестроить и повторно запустить.Это должно сработать ... надеюсь..

Если вы переместили рабочую область eclipse по новому пути, то вам следует использовать project-> clean перед сборкой плагина, иначе вы столкнетесь с этой проблемой.

Ладно, я ненавижу быть здесь капитаном очевидностью, но я уже совершал эту ошибку раньше.Это также может произойти, когда вы забудете расширить BundleActivator.

Я потратил некоторое время на решение этой проблемы.Наконец, я заметил, что ClassNotFoundExceptions не соответствовали моему коду, они исходили из неправильных (старых) пакетов.Я проверил, был ли какой-то другой плагин, который вмешивался в мои отладки / экспорт, и действительно, был мой собственный плагин!

Итак, простое исправление, которое можно попробовать, если вы столкнулись с этим, а CNFE не соответствуют вашему коду:

  • Перейдите в раздел "Установка нового программного обеспечения".
  • Нажмите на "уже установлено".
  • Удалите все экземпляры вашего пакета / плагина и перезапустите

Вероятно, это было вызвано тем, что я изменил идентификатор плагина, заставив Eclipse рассматривать его как новый плагин.

Еще один хороший сайт, на который стоит заглянуть, если вы расстраиваетесь и застреваете: http://www.eclipsezone.com/eclipse/forums/t99010.html

В моем случае было это сообщение "Activator ..invalid", но в следующих исключениях были исключения ClassNotFound в пакете, где я ничего не менял..

Гуу (тоже опубликовал решение) - мой герой, После увеличивающийся

Bundle-ManifestVersion: 2

Для

Bundle-ManifestVersion: 3

все работает :)

Я получил такое же исключение.Основной проблемой было исключение ClassCastException .Для моего пакета требуется org.osgi.core 4.3, тогда как программа запуска equinox использует 4.2.

С уважением Роланд

Это также может произойти, если вы назовете пакет в честь пакета в другом пакете.

Итак:

  • если у вас есть Bundle A который содержит пакет org.my.package.name.function,
  • и вы создаете bundle B с именем org.my.package.name.function,
    • => тогда система может поискать там активатор и не найти ни одного.

Я нашел причину ошибки.Ошибка возникает, когда я пытаюсь создать новый объект из любого другого класса в конструкторе класса activator.Разве не законно создавать объект в activator плагина ?

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

Однако это было исправлено путем отключения отложенной загрузки плагина.В графическом интерфейсе на Обзор вкладка из MANIFEST.MF редактор снимите флажок Активируйте этот подключаемый модуль при загрузке одного из его классов.Или непосредственно в MANIFEST.MF удалить строку

Bundle-ActivationPolicy: lazy

Еще один очевидный капитан:Если вы измените пути к своим исходным файлам (напримерsrc/ в src/main/java), но забудьте обновить build.properties, компиляция всегда будет успешной, но ваш плагин никогда не будет работать.

У меня была такая же ошибка, в моем случае я создал свой собственный конструктор с параметрами.Но я не предоставил конструктор по умолчанию.Итак, после удаления моего конструктора и инициализации всего в методе start() это сработало как charme.

Я также столкнулся с той же ошибкой.Активатор XX для пакета XX недопустим, как и исключение ClassNotFoundException.Я проверил plugins\ directory и не смог найти нужный класс.

-- Поскольку нет jar-файла, содержащего необходимый класс, есть только соответствующий каталог.Например, здесь нет каталога com.hh.jar, а есть только каталог com.hh.

Итак, должно быть, что-то не так в создании com.hh.jar.

если com.hh.jar ссылаетесь на другие плагины, то также проверьте их.

Я решил проблему, отредактировав MANIFEST.MF.Откройте его с помощью плагина Manifest Editor, на вкладке runtime, добавьте необходимые пакеты в раздел "Экспортированные пакеты".и в "classpath" добавьте необходимые библиотеки, и, "." (текущий каталог, ВАЖНО)

Я также сталкивался с этим isue при "объединении" простых файлов jar.Если некоторые зависимости не разрешены или jars зависят от более высокой версии JAVA, чем та, которую вы используете, активатор не запустится, выдавая вышеупомянутое исключение.Быстрый способ выяснить, является ли это проблемой, - удалить jars из bundle-classpath (вкладка runtime манифеста) и проверить, будет ли активатор работать правильно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top