代码之家  ›  专栏  ›  技术社区  ›  tharinduwijewardane

maven scr插件不使用java 10生成OSGI-INF文件夹结构

  •  1
  • tharinduwijewardane  · 技术社区  · 8 年前

    我正在尝试用Java10构建一个基于EquinoxOSGi的软件平台,但我无法获得scr插件来生成osgi-INF文件夹结构(其中包含服务组件.xml)在目标文件夹中。

    如果我使用旧版本的scr插件(1.7.4)和java8,一切都很好。

    如果我尝试用Java10构建它,就会出现以下错误。

    [错误]无法执行目标网址:apache.felix:maven scr公司-插件:1.7.4:scr(generate scr scrdescriptor)on project carbon kernel:执行generate scr scrdescriptor of goal网址:apache.felix:maven scr公司-插件:1.7.4:scr失败:网址:apache.felix.scrplugin.tags.annotation注释.AnnotationTagProvider不是ImageIO SPI类

    当我将maven scr plugin版本升级到1.26.0(最新版本)时,它抱怨“在classpath中找不到注释处理器”

    Apache Felix Maven SCR Plugin Use

    现在我得到以下错误:

    我已经尝试过这一点,甚至与最新的春分释放(光子),这是不可用的maven中央回购。

    1 回复  |  直到 8 年前
        1
  •  1
  •   tharinduwijewardane    8 年前

    我替换了

    final Iterator<AnnotationTagProvider> serviceIter = ServiceRegistry.lookupProviders(AnnotationTagProvider.class, classLoader);
    

    具有

    final Iterator<AnnotationTagProvider> serviceIter = ServiceLoader.load(AnnotationTagProvider.class, classLoader).iterator();
    

    在里面 AnnotationTagProviderManager

    如中所述 a similar issue .

    • 费利克斯SCR注释
    • OSGi声明性服务(DS)注释

    maven scr plugin的旧版本已经使用了felix scr注释,但是后来在文档中提到,它已经开始支持来自osgi的felix scr注释和DS注释,这是生成osgi元数据xmls的标准注释集。这是通过使用scr插件向pom添加相关的依赖项来实现的。然而,scr插件的更新版本似乎不支持felix scr注解,我从社区中发现scr插件处于维护模式,最好使用maven bundle插件(没有scr插件),它只支持osgi ds注解。

    推荐文章