编译Opendaylight Fluorine的Hello World示例时出错-Yang Tools Issue

时间:2019-05-11 11:12:29

标签: opendaylight ietf-netmod-yang

我有一个关于Carbon发行的hello-world ODL项目。我将POM依赖项从公共存储库更改为最新版本,现在在编译“ impl”项目时遇到了失败:

cannot access org.opendaylight.yangtools.yang.binding.RpcOutput
[ERROR]   class file for org.opendaylight.yangtools.yang.binding.RpcOutput not found

这是由于“ api”项目中yang工具生成的源。源包含“ RpcOutput”的导入,但“ impl”项目找不到。

我将'api'项目中的POM更改为Carbon,它工作正常。

我针对“ api”项目的POM是

<parent>
    <groupId>org.opendaylight.mdsal</groupId>
    <artifactId>binding-parent</artifactId>
    <!--<version>0.10.4-Carbon</version>--> <--this works-->
    <version>4.0.1</version>  <--this fails-->
    <relativePath/>
  </parent>

版本4.0.1和3.0.6失败-org.opendaylight.mdsal.binding-parent项目的最新版本的ODL和yang工具发生了什么变化?

在简单的“ impl”项目中编译失败:

public class HelloWorldImpl implements HelloService{

    @Override
    public ListenableFuture<RpcResult<HelloWorldOutput>> helloWorld(HelloWorldInput input) {
        HelloWorldOutputBuilder hout = new HelloWorldOutputBuilder();
        hout.setGreeting("hello" + input.getName());
        return RpcResultBuilder.success(hout.build()).buildFuture();
    }
} 

由于“找不到org.opendaylight.yangtools.yang.binding.RpcOutput的类文件”错误而失败。

“ impl”项目pom是

 <parent>
  <groupId>org.opendaylight.controller</groupId>
  <artifactId>config-parent</artifactId>
  <!--<version>0.6.4-Carbon</version>--><!--this was the old working--> 
  <version>0.8.4</version>  <!--this is also the latest ver-->
  <relativePath/>
 </parent>

主要pom是

<parent>
   <groupId>org.opendaylight.odlparent</groupId>
   <artifactId>odlparent</artifactId>
   <!--<version>1.8.4-Carbon</version>--><!--this was old working ver-->
   <version>5.0.0</version> <!--this is also the latest ver-->
   <relativePath/>
  </parent>

1 个答案:

答案 0 :(得分:1)

您需要使用the appropriate versions for Fluorine

  • binding-parent 0.13.2
  • ODL家长3.1.6

您还需要从config-parent迁移到BluePrint,有关详细信息,请参见the OpenDaylight wiki BluePrint pageconfig-parent在氟中不再可用。

无论如何,既然您要进行迁移,建议您直接转到Neon。有详细的guide可以帮助您从氟升级到霓虹灯。