Активатор для пакета недействителен - PullRequest
16 голосов
/ 20 августа 2009

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

org.osgi.framework.BundleException: активатор для связки org.x.y.Activator для пакета org.x.y недействителен.

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

Ответы [ 14 ]

17 голосов
/ 20 августа 2009

Проверьте ваш build.properties раздел

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


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

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

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

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


Penguru добавляет:

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

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

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

3 голосов
/ 18 мая 2011

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

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

1 голос
/ 31 октября 2016

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

Итак:

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

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

С уважением Roland

1 голос
/ 18 октября 2013

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

Гуу (тоже выложил решение) мой герой, после увеличение

Bundle-ManifestVersion: 2

до

Bundle-ManifestVersion: 3

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

1 голос
/ 26 марта 2012

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

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

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

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

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

1 голос
/ 03 июня 2011

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

1 голос
/ 21 апреля 2011

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

0 голосов
/ 02 мая 2016

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

0 голосов
/ 21 ноября 2014

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

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

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

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

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

...