我正在尝试在 Eclipse 中创建一个简单的插件。当我运行该应用程序时,我在日志文件中看到以下错误:

org.osgi.framework.BundleException:束org.xyactivator bundle org.xy的激活剂无效。

您对这个错误有什么想法吗?

有帮助吗?

解决方案

检查你的 build.properties 部分

如果它没有正确指定最终二进制结果中应该包含的内容,它将无法工作。检查 .class 文件是否位于 MANIFEST.MF 指定的位置。


日蚀地带, ,此错误消息的另一个原因:

如果您在日志中看到类似这样的消息

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

, ,那么这通常意味着已经有 ClassNotFoundException 在调用 start() 方法之前,首先尝试加载该类。


彭古鲁 补充道:

当我尝试从激活器类的构造函数中的任何其他类创建新对象时,会发生错误。在激活器插件中创建对象不合法吗?

  • 如果该类来自另一个尚未“激活”的插件,那可能是您的问题。
  • 如果找不到该类,那么您的插件激活器也会失效。

基本建议:在中完成初始化可能会更好 start() 方法Activator 而不是它的构造函数。

其他提示

我也面临同样的问题,同时从不同的工作区导入插件。基本上,它是捆绑类路径,其中框架查找,同时加载的类。当您导入到不同的工作区,请确保您更改类路径指向相应的位置,即类文件都存在哪里。

修改类路径尝试清洁和重新构建并重新运行之后。它应该work..hopefully ..

如果您有Eclipse工作区移动到一个新的路径,那么你应该使用项目 - >清理插件构建之前,你还是满足了这个问题。

OK,我不喜欢当队长很明显在这里,但我以前就犯了这个错误。当你忘记延长的BundleActivator也会发生这种情况。

我花了一些时间来解决这个问题。最后我注意到 ClassNotFoundExceptions 与我的代码不符,它们来自错误的(旧的)包。我检查了是否有其他插件扰乱了我的调试/导出,确实有,我自己的插件!

因此,如果您遇到此问题并且 CNFE 与您的代码不符,可以尝试一个简单的修复:

  • 转到“安装新软件”
  • 点击“已安装”
  • 删除包/插件的所有实例并重新启动

这可能是因为我更改了插件 ID,使 Eclipse 将其视为新插件。

如果您感到沮丧和陷入困境,可以看看另一个好网站: http://www.eclipsezone.com/eclipse/forums/t99010.html

在我的情况下,没有此消息“活化剂..invalid”,但在接下来的例外有以捆绑ClassNotFound的例外是我没有改变的东西..

GUU(发布过一个解决方案)是我的英雄,之后的增加

Bundle-ManifestVersion: 2

Bundle-ManifestVersion: 3

一切工作:)

我得到了相同的异常。根本问题是一个ClassCastException。我的包需要org.osgi.core 4.3而春分发射使用4.2。

此致 罗兰

如果您在另一个包中的包之后命名一个包,也可能会发生这种情况。

所以:

  • 如果你有 Bundle A 其中包含包 org.my.package.name.function,
  • 你创造 bundle B 有名字 org.my.package.name.function,
    • => 然后系统可能会在那里寻找激活器,但找不到任何激活器。

我发现了错误的原因。当我尝试激活类的构造函数创建任何其他类的新对象时发生错误。是不是合法的插件激活创建一个对象?

在我的情况下,这个例外是因为Eclipse自定义类加载器的无力解决和及时其他插件加载所有依赖类。我不是Eclipse的超级大师,所以也许这是我的错。

然而它是固定通过禁用插件的迟缓装载。在GUI上的概述MANIFEST.MF编辑取消选中的选项卡的当其类别中的一个被加载激活此插件。或直接在MANIFEST.MF删除线

Bundle-ActivationPolicy: lazy

另一个队长显而易见的:如果你改变你的源文件的路径(例如SRC /为src / main / java目录),但忘记更新build.properties,编译总是会成功,但你的插件行不通

我有同样的错误,在我来说,我创建了自己的构造函数的参数。但我没有提供一个默认的构造函数。所以除去我的构造函数和所有内start()方法初始化后,它的工作就像风情万种。

我也遇到了同样的错误。对于束XX活化剂XX是无效的,并且ClassNotFoundException的。 我检查了插件\目录下,并不能找到类需要的。

- 因为没有包含所需类没有jar文件,仅存在对应的目录。 例如,不存在com.hh.jar,但只有com.hh目录。

因此,必须有一些错误有关创建com.hh.jar。

如果com.hh.jar参考其他插件,则还检查它们。

我通过编辑MANIFEST.MF解决了这个问题。 通过插件清单编辑器中打开它,在Runtime选项卡,在“导出包”添加需要的软件包。 并在“类路径”,添加需要的库,和“” (当前目录,重要)

我也运行到本isue当“捆定义”纯的jar文件。如果一些依赖得不到解决,或罐子依赖于更高的JAVA版比您正在使用的一个,激活器将无法启动,给上面的异常。的快捷方式,以找出是否这是问题是去除从捆类路径的罐子(清单的运行时间标签),并检查是否活化剂将正常运行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top