有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java捆绑包的激活器无效

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

org.osgi.framework.BundleException : The activator for bundle org.x.y.Activator for bundle org.x.y is invalid.

你知道这个错误吗


共 (6) 个答案

  1. # 1 楼答案

    在我的例子中,有这样一条消息“Activator..invalid”,但在接下来的异常中,如果我没有更改某些内容,则捆绑包中有ClassNotFound异常

    Guu(也发布了一个解决方案)是我的英雄,在增加后

    Bundle-ManifestVersion: 2
    

    Bundle-ManifestVersion: 3
    

    一切正常:)

  2. # 2 楼答案

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

    因此,如果您面临此问题,而CNFE与您的代码不一致,可以尝试一个简单的修复方法:

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

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

    如果你感到沮丧和困顿,另一个好网站是:http://www.eclipsezone.com/eclipse/forums/t99010.html

  3. # 3 楼答案

    在从不同的工作区导入插件时,我也遇到了同样的问题。基本上,它是框架在加载类时查找的bundle类路径。导入到其他工作区时,请确保更改类路径以指向适当的位置,即类文件所在的位置

    修改类路径后,尝试清理、重新构建并重新运行。它应该有用。。希望

  4. # 4 楼答案

    好吧,我不想成为这里的队长,但我以前犯过这个错误。当您忘记扩展BundleActivator时,也会发生这种情况

  5. # 5 楼答案

    查看^{}部分

    如果它没有正确地指定最终二进制结果中应该包含的内容,它将无法工作。检查一下。类文件是清单的存放位置。MF说他们会的


    EclipseZone中,出现此错误消息的另一个原因是:

    If you see a message in the log like

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

    , then this usually means there has been a ClassNotFoundException trying to load the class in the first place, before it's even got to the start() method.


    penguru补充:

    The error occurs when I try create a new object from any other class in the constructor of activator class. Isn't it legal to create an object in activator plugin ?

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

    基本建议:在Activator^{} method中进行初始化可能比在其构造函数中进行初始化更好

  6. # 6 楼答案

    如果您已经将eclipse工作区移动到一个新路径,那么您应该使用项目->;在你的插件构建之前清理,否则你会遇到这个问题