编译自定义 OpenDaylight 时出错 API

Error when compiling custom OpenDaylight API

我正在尝试根据 https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Startup_Project_Archetype

上的 API 教程创建自定义 API

工具:OpenDaylight Lithium、Eclipse、Maven 3.3.9

我可以编译 api 中的文件夹,但不能编译 impl (FlowImpl.java) 中的文件夹。

这是错误信息:

[INFO] Starting audit...
/home/shaoxu/Desktop/distribution-karaf-0.3.3-Lithium-SR3/flow/impl/src/main/java/org/opendaylight/flow/impl/FlowImpl.java:1: Line does not match expected header line of '^/[*]+$'.
Audit done.
[INFO] There is 1 error reported by Checkstyle 6.2 with check-license.xml ruleset.
[ERROR] src/main/java/org/opendaylight/flow/impl/FlowImpl.java[1] (header) RegexpHeader: Line does not match expected header line of '^/[*]+$'.

Eclipse 中没有错误信息。

这是源代码:

package org.opendaylight.flow.impl;

import java.util.concurrent.Future;

import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.flow.rev150105.FlowService;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.flow.rev150105.FlowPathInput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.flow.rev150105.FlowPathOutput;
import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.flow.rev150105.FlowPathOutputBuilder;
import org.opendaylight.yangtools.yang.common.RpcResult;
import org.opendaylight.yangtools.yang.common.RpcResultBuilder;

public  class FlowImpl implements FlowService {

      @Override
        public Future<RpcResult<FlowPathOutput>> flowPath(FlowPathInput input) {
          FlowPathOutputBuilder flowBuilder = new FlowPathOutputBuilder();
          flowBuilder.setPath(input.getNodes());
            return RpcResultBuilder.success(flowBuilder.build()).buildFuture();
        }

}

错误是什么?

您遇到的错误是由 OpenDaylight 中每个文件开头的 copyright/license header 的强制格式引起的:

/*
 * Copyright (c) 2016 ... and others.  All rights reserved.
 *
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
 * and is available at http://www.eclipse.org/legal/epl-v10.html
 */

如果您使用原型,这个 header 应该已经为您生成了。有两种解决问题的方法:如上添加许可证 header(如果您对许可证满意),或者禁用许可证检查——如果您想执行后者,请编辑您的问题并添加您用于 impl 的 POM,因此我可以解释如何进行。

您提到您正在使用锂,我强烈建议您切换到铍甚至硼以进行新的开发。维基页面目前主要是 up-to-date Beryllium。

在我的 Beryllium 中,我通常会在 运行 我的构建时跳过 checkstyle 测试。将 -Dcheckstyle.skip=true 参数添加到您的命令以执行 Maven 构建。