Eclipse OSGI运行配置中的dev模式

时间:2012-06-28 14:43:52

标签: eclipse osgi

我在一个小的OSGI项目中遇到了一些问题。 在其中一个软件包中,我安装并以编程方式启动另一个以前未安装的软件包。

然而,当我在Eclipse中运行项目时,在bundle的实现中跳转ClassNotFoundException

我相信这是因为Eclipse使用指向dev.properties文件的-dev参数(开发模式)自动启动项目,在该文件中它指定了构建每个包的bin文件夹。显然,Eclipse创建的这个dev.properties文件不包含我稍后将安装的软件包。

该项目在Eclipse之外工作正常,并且jar是正确的但是当我在Eclipse中运行它时,ClassNotFoundException会跳转。这是因为当我在开发模式下启动eclipse时,会创建一个dev.properties文件来增强框架的类路径。但是,当我想安装新的bundle时,dev.properties不会在新事件发生时更新,并且Eclipse也不允许我使用我的自定义dev.properties文件,因此框架无法从该新bundle加载类

有没有办法使用自定义的dev.properties或更改任何可以让它在eclipse中工作的东西?

以下是代码的一个小例子:

 public void charge(String location){
    try {
        System.out.println("Entró");
        bundle2= bundleContext.installBundle(location);
        System.out.println("Instalado");

        bundle2.start();
        System.out.println("Activado");

    } catch (BundleException e) {
        e.printStackTrace();
    }
}

3 个答案:

答案 0 :(得分:1)

当您使用PDE从Eclipse中启动Equinox框架实例时,“dev”模式用于增强框架的类路径,以从插件项目中的“bin”文件夹加载类和资源。

如果在Eclipse中运行时有效,但在导出/构建和运行外部时不起作用,那么build.properties文件中可能缺少某些内容(如果使用了任何PDE导出功能)或某些包MANIFEST.MF中缺少导入。

您能否提供有关设置以及如何生成在Eclipse之外运行的位的更多详细信息?

答案 1 :(得分:0)

我不认为dev.properties是这样使用的,但无论如何,OSGi是动态的,如果你安装了一个bundle,它应该可以工作,而不管-dev模式。

您安装的jar或文件夹是不正确的?我建议你从eclipse导出你正在安装的软件包(来自项目 - >导出 - >可部署的插件)。

如果你的build.properties是正确的,你应该得到一个正确的jar。尝试安装该jar。

答案 2 :(得分:0)

如果您使用的是Debug Configuration-> OSGi框架。确保选中这些选项:

  • Include optional dependencies when computing required bundles
  • Add new workspace bundles to this launch configuration automatically

这样,每次在工作区内添加或创建新插件时,都会将其添加到执行中。