Активатор X для пакета Y недопустим, вызванный ClassNotFoundException: X - PullRequest
2 голосов
/ 03 октября 2011

При запуске моего приложения OSGi в Eclipse я получаю следующую ошибку:

org.osgi.framework.BundleException: The activator org.pathvisio.sbgn.SbgnPlugin for bundle org.pathvisio.sbgn is invalid
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:157)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:751)
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:352)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:370)
    at org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1068)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:557)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:464)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:248)
    at org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:445)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:227)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:337)
Caused by: java.lang.ClassNotFoundException: org.pathvisio.sbgn.SbgnPlugin
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:494)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:398)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:326)
    at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:231)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:150)
    ... 10 more

Это похоже на ту же проблему, что и: Недопустимый активатор для связки

Однако, что бы я ни пытался, я получаю ту же ошибку.Даже если я изменю имя класса Activator на другое, оно все равно выдаст мне ту же ошибку, используя старое имя класса.

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

Вот мой MANIFEST.MF:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: org.pathvisio.sbgn
Bundle-SymbolicName: org.pathvisio.sbgn
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: org.pathvisio.sbgn.Activator
Bundle-ClassPath: lib/activation.jar,
 lib/google-collect-snapshot-20090211.jar,
 lib/jaxb-api.jar,
 lib/jaxb-impl.jar,
 lib/jaxb-xjc.jar,
 lib/jaxb1-impl.jar,
 lib/jsr173_1.0_api.jar,
 lib/org.sbgn.jar
Export-Package: org.pathvisio.sbgn
Require-Bundle: com.springsource.org.jdom;bundle-version="1.1.0",
 org.pathvisio.core;bundle-version="2.0.11",
 org.bridgedb;bundle-version="1.1.0",
 org.pathvisio.gui;bundle-version="2.0.11",
 org.pathvisio.desktop;bundle-version="2.0.11",
 org.bridgedb.bio;bundle-version="1.1.0"
Import-Package: org.osgi.framework;version="1.5.0"

Как видите, я переименовал класс активатора, но он по-прежнему сообщает об ошибке, используя имя класса, которое я указал ранее.

Ответы [ 4 ]

6 голосов
/ 20 июня 2012

Добавьте., К Bundle-classpath и проверьте еще раз. Он должен работать.

1 голос
/ 17 апреля 2013

Я столкнулся с этой проблемой после переименования пакета моего класса Activator.Для всех, кто сталкивается с этим, eclipse обновила ссылки на Активатор в файле MANIFEST.MF, но не в файле plugin.xml.В моем случае файл plugin.xml указывал на старое приложение

  <extension id="application" point="org.eclipse.core.runtime.applications">
  <application>
     <run class="old.app.Application">
     </run>
  </application>

Итак, обновил файл plugin.xml и все снова запустилось.

0 голосов
/ 04 октября 2011

Нет ли связанного исключения? Одна из причин заключается в том, что ваш пакет не импортирует пакет org.osgi.framework. Таким образом, загрузка класса вашего активатора завершается неудачно, так как ваш загрузчик классов пакета не может загрузить org.osgi.framework.BundleActivator.

0 голосов
/ 03 октября 2011

Eclipse кеширует действительно что-то! Перейдите к конфигурации запуска и откройте вкладку Settings. Выберите опцию Clear the configuration area before launching и попробуйте снова запустить приложение OSGi!

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