У меня был рабочий проект ODL hello-world по выпуску Carbon. Я изменил зависимости POM на последнюю версию из общедоступного репозитория, и теперь я получаю ошибку при компиляции проекта 'impl':
cannot access org.opendaylight.yangtools.yang.binding.RpcOutput
[ERROR] class file for org.opendaylight.yangtools.yang.binding.RpcOutput not found
Это связано с источником, сгенерированным инструментами ян в проекте api. Источники содержат импорт «RpcOutput», но проект «impl» не находит его.
Я изменил свой POM в проекте api на Carbon, и он отлично работает.
Мой POM для проекта 'api'
<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 терпят неудачу - что изменилось в последней версии инструментов ODL и yang из проекта org.opendaylight.mdsal.binding-parent
?
Сбой компиляции в проекте '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 not found».
Проектная помпа 'impl' -
<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>
Основная помпа
<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>