2012-07-04 38 views
1

什么是一些配置更改使Eclipse PDE能够最好地支持Equinox和Felix?Eclipse配置支持双Equinox/Felix环境

这是我目前遇到的一个示例问题。我可以通过Eclipse OSGi Framework启动器运行我的应用程序。同样,PDE中也没有编译问题。然而,在菲利克斯运行时,我会得到NoClassDefFoundErrors:

java.lang.NoClassDefFoundError: org/w3c/dom/DOMException 

我的理解是这是我的Eclipse设置是这里有毛病; org.w3c.dom不是'默认的'OSGi包,当我在Eclipse中运行它时不应该加载。同样,在我的代码中导入org.w3c.dom.DOMException应该是一个错误。

我知道如何解决这个费利克斯:声明一个导入包。但那不是我的问题。我的问题是如何强制Eclipse PDE对Felix进行更紧密的配置...基本上是为了加载包中的更严格?

回答

1

我认为Equinox 确实行为就像Felix,如果你单独运行它。正如osgi.org中所述,它比Equinox更像是Eclipse的遗留问题。

据我所知,没有任何方法可以覆盖来自Eclipse的启动委派,但我很乐意被证明是错误的,因为我经常遇到这个问题。

+0

好的谢谢。我将编辑该问题,专注于Eclipse启动器和PDE。 –

0

这听起来像启动程序将bootdelegation设置为传统模式。请参阅OSGi Wiki上的以下页面:http://wiki.osgi.org/wiki/Why_does_Eclipse_find_javax.swing_but_not_Felix%3F

+0

下面是发送的选项:-Declipse.ignoreApp = true -Dosgi.noShutdown = true -Dosgi.dev -Dosgi.debug =/home/gravelld/eclipse-workspaces/bliss/com.elsten.bliss.bundle/.options -Declipse.log.level = ALL -Dbliss.obr.updaterepository = file:/home/gravelld/eclipse-workspaces/bliss/com.elsten.bliss.installer/release/bliss-bundle/repository.xml -Dfile.encoding = UTF-8 -classpath /opt/eclipse-indigo/eclipse/plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar org.eclipse.equinox.launcher.Main。所以我没有看到任何东西。此外,这并不能解释为什么PDE在编译时不能捕获它。 –

1

如果您正在开发服务器应用程序,我建议根本不要使用PDE。我使用maven和maven bundle插件来开发我的包。然后我部署在Apache karaf上。通过使用karaf dev:watch命令和远程调试,调试也非常简单。我从来没有真正错过PDE功能,他们从未用我的maven构建工作。

+0

这是Maven的bnd还是你自己管理清单?我的理解是,如果你正在做后者那是两个*你必须指定依赖关系。 –

+0

我使用felix的maven bundle插件,它在内部使用bnd。所以只有一个地方可以指定依赖关系。 Bnd还会自动检测大多数依赖项。所以大多数时候没有太多的事情要做。 –

+0

我在这里得到了一个完整的例子:http://www.liquid-reality.de/x/DIBZ –