Java 启动OSGi包

Java 启动OSGi包,java,osgi,bundle,equinox,Java,Osgi,Bundle,Equinox,我尝试在Eclipse中运行OSGi插件。它是空包,但eclipse总是向我发送错误 这是我的控制台信息 怎么了?首先检查空插件的依赖项。可能是您缺少添加插件,而在运行时未加载插件 如果插件中有依赖项,请检查使用的插件版本 您在插件中定义了哪个Java版本?它是否高于运行时使用的版本 你的插件正在加载DLL吗?如果是,请检查是否可以在运行时找到DLL 编辑: # 尚未创建工作台。 # 位于org.eclipse.ui.PlatformUI.getWorkbench(PlatformUI.java

我尝试在Eclipse中运行OSGi插件。它是空包,但eclipse总是向我发送错误 这是我的控制台信息
怎么了?

首先检查空插件的依赖项。可能是您缺少添加插件,而在运行时未加载插件

如果插件中有依赖项,请检查使用的插件版本

您在插件中定义了哪个Java版本?它是否高于运行时使用的版本

你的插件正在加载DLL吗?如果是,请检查是否可以在运行时找到DLL

编辑:

# 尚未创建工作台。 # 位于org.eclipse.ui.PlatformUI.getWorkbench(PlatformUI.java:92) # 位于org.eclipse.mylyn.internal.monitor.ui.MonitorUiPlugin.start(MonitorUiPlugin.java:145)

您在Activator的start方法中定义了什么?
这表明您正在使用尚未创建的工作台。

这是主要问题:

java.lang.IllegalStateException:尚未创建工作台

您正在使用来自工作台或与工作台相关的方法/对象,而工作台本身尚未创建。也许您可以延迟捆绑包的激活,或者从捆绑包的激活/初始化部分删除“工作台”依赖项


哎呀,回到开始。日志的最后一行包含一个“Hello World”-这是包的预期输出吗?可能不是您的包导致了输出上的错误和警告。我也看到一些“mylin”和其他东西。如果可能的话,在您的系统中添加另一个干净的eclipse安装(没有额外的捆绑包/插件),并在该环境中尝试该捆绑包


从a:

这通常发生在有人试图使用Java-classpath对OSGi包运行Java应用程序时。这实际上意味着工作台插件尚未启动,因此对getWorkbench()的调用失败。这本质上是一个竞争条件,可以通过表达对该捆绑包的显式依赖关系或将该捆绑包升级到工作台以外的平台来解决。通常看不到,但如果是,就是这样

您自己的包的超类是什么?因为这可能会在工作台上引入依赖关系


以及-如何从eclipse中“启动”捆绑包,或者您是否已将其装入jar并将其放入eclipse插件文件夹中?这也可能会有所不同。

在运行捆绑包之前,请尝试这样做:

if(!PlatformUI.isWorkbenchRunning()) {
    PlatformUI.createAndRunWorkbench(PlatformUI.createDisplay(), new WorkbenchAdvisor() {...}); 
}

这些错误都与您的包无关。正如您从“Hello World”输出中所看到的,您的捆绑包刚刚开始

我相信您以错误的方式启动Eclipse,可能是急于激活所有捆绑包。Eclipse需要以“惰性激活”模式启动大多数工作台捆绑包

  • 请指定如何启动Eclipse。您是否将
    -console
    添加到
    eclipse.ini
    文件中
  • 当您不尝试使用自己的捆绑包时,是否会出现此问题
  • 您如何安装和激活自己的捆绑包
  • 请粘贴以下文件:
    • MANIFEST.MF
      来自您自己的捆绑包
    • config.ini
      from
      ECLIPSE\u HOME/configuration
    • eclipse.ini
      from
      eclipse\u HOME

  • 问题是,默认目标包括许多与您的捆绑包无关的捆绑包——在所有错误消息完成后键入命令
    ss
    ,将列出它们

    以下是您要做的:

  • 在Eclipse中,转到首选项>插件开发>目标平台
  • 创建新的空目标定义
  • 在Locations选项卡中,添加一个只包含Equinox捆绑包的目录(您可以从Eclipse安装的插件目录中复制它,jar的名称类似于org.Eclipse.osgi_3.7.0.v20110613.jar)
  • 确保新目标处于活动状态,然后再次尝试运行捆绑包

  • 为了“工作台尚未创建”整整一天,我付出了很多努力

    但是我通过以下步骤得到了解决方案-

  • 转到运行配置,移除所有目标平台JAR
  • 单击add required bundles
  • 检查org.apache.felix.gogo.runtime、org.apache.felix.gogo.shell、org.eclipse.eqinox.console、org.eclipse.osgi和您的jar文件
  • 最后也是重要的一步。转到设置-选中复选框“启动前清除配置区域”
  • 现在运行OSGi应用程序
  • 如果它对你和对我都有效,那就享受吧

  • 谢谢

    它完全是空的插件是的,'你好,世界,这是我的byndle的输出。我下载了新的Eclipse-这是相同的错误:(哪里是“添加必需的包”?