【发布时间】:2011-03-27 17:17:25
【问题描述】:
我尝试在 Eclipse 中运行 OSGi 插件。它是空包,但 Eclipse 总是向我发送错误 有我的控制台消息 http://pastebin.com/dqQfpQhd 怎么了?
【问题讨论】:
我尝试在 Eclipse 中运行 OSGi 插件。它是空包,但 Eclipse 总是向我发送错误 有我的控制台消息 http://pastebin.com/dqQfpQhd 怎么了?
【问题讨论】:
首先检查空插件的依赖关系。可能是您缺少添加插件,但在运行时未加载。
如果您的插件中有依赖项,请检查所使用的插件版本。
您在插件中定义了哪个 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(没有额外的包/插件)并在该环境中尝试该包。
来自good article on eclipsezone:
这通常发生在有人尝试使用 java -classpath .... 对 OSGi 包运行 Java 应用程序时。这实际上意味着工作台插件尚未启动,因此对 getWorkbench() 的调用失败。这本质上是一种竞争条件,可以通过表达对该捆绑包的显式依赖或将该捆绑包提升到 higher start level 而不是工作台来解决。通常看不到,但如果是,那就是正在发生的事情。
您自己的捆绑包的超类是什么?因为这可能会引入对工作台的依赖。
而且 - 如何从 Eclipse 中“启动”捆绑包,或者将其打包并放入 Eclipse 插件文件夹中?这也可能有所作为。
【讨论】:
在运行你的包之前尝试这样做:
if(!PlatformUI.isWorkbenchRunning()) {
PlatformUI.createAndRunWorkbench(PlatformUI.createDisplay(), new WorkbenchAdvisor() {...});
}
【讨论】:
这些错误都与您的捆绑包无关。正如您从“Hello World”输出中看到的那样,您的包开始正常。
我相信您以错误的方式启动 Eclipse,可能急切地激活了所有捆绑包。 Eclipse 需要以“延迟激活”模式启动大多数工作台包。
-console 添加到eclipse.ini 文件中?MANIFEST.MF
config.ini 来自ECLIPSE_HOME/configuration
eclipse.ini 来自ECLIPSE_HOME
【讨论】:
问题是默认目标包含许多与您的包无关的包——当所有错误消息完成后键入命令ss 将列出它们。
这就是你要做的:
【讨论】:
我为“尚未创建工作台”整整一天而奋斗了很多。
但我通过以下步骤得到了解决方案。-
谢谢
【讨论】: