我尝试在Eclipse中运行OSGi插件。它是空捆绑,但是eclipse总是给我发错误 有我的控制台消息 http://pastebin.com/dqQfpQhd 有什么问题?
答案 0 :(得分:6)
问题是默认目标包含许多与您的包无关的包 - 在所有错误消息完成后键入命令ss
将列出它们。
这是你做的:
答案 1 :(得分:5)
我很努力“Workbench还没有创建”整整一天。
但我通过以下步骤获得了解决方案 .-
由于
答案 2 :(得分:3)
这是主要问题:
java.lang.IllegalStateException:尚未创建Workbench。
当您尚未创建工作台本身时,您正在使用工作台中的方法/对象或与工作台相关的方法/对象。也许你可以延迟激活bundle或从bundle的激活/初始化部分中删除'workbench'依赖。
哎呀,回到开头。日志的最后一行包含“Hello World” - 这是您的捆绑包的预期输出吗?也许不是你的捆绑导致输出上的错误和警告。我也看到了一些'mylin'和其他东西。如果可能,请在系统中添加另一个干净的eclipse安装(无其他软件包/插件),并在该环境中尝试使用该软件包。
来自good article on eclipsezone:
当有人试图使用java -classpath ....对OSGi包运行Java应用程序时,通常会出现这种情况。这实际上意味着工作台插件尚未启动,因此对getWorkbench()的调用失败。这本质上是一种竞争条件,可以通过表达对该捆绑包的显式依赖关系或将该捆绑包提升到higher start level而不是工作台来解决。通常看不到,但如果是,那就是发生了什么。
你自己的捆绑包的超类是什么?因为这可能会引入对工作台的依赖。
并且 - 如何从eclipse中启动捆绑包,或者你将它装罐并将其放入eclipse插件文件夹中?这也可能有所不同。
答案 3 :(得分:2)
这些错误都与您的捆绑无关。正如您从“Hello World”输出中看到的那样,您的捆绑包正好开始。
我相信你是以错误的方式启动Eclipse,可能急切地激活所有捆绑包。 Eclipse需要以“延迟激活”模式启动大多数工作台捆绑包。
-console
添加到eclipse.ini
文件中?MANIFEST.MF
config.ini
ECLIPSE_HOME/configuration
来自eclipse.ini
ECLIPSE_HOME
答案 4 :(得分:0)
首先检查空插件的依赖项。可能是你缺少添加一个插件,在运行时没有加载。
如果你的插件中有依赖项,请检查使用插件的版本。
您在插件中定义了哪个Java版本?它是否比您在运行时使用的版本更高?
你的插件加载DLL了吗?如果是,请检查是否可以在运行时找到DLL。
修改强>
# Workbench尚未创建。 # 在org.eclipse.ui.PlatformUI.getWorkbench(PlatformUI.java:92) # 在org.eclipse.mylyn.internal.monitor.ui.MonitorUiPlugin.start(MonitorUiPlugin.java:145)
您在Activator的start方法中定义了什么? 它是sems,你正在使用尚未创建的工作台。
答案 5 :(得分:0)
在运行捆绑包之前尝试执行此操作:
if(!PlatformUI.isWorkbenchRunning()) {
PlatformUI.createAndRunWorkbench(PlatformUI.createDisplay(), new WorkbenchAdvisor() {...});
}