You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot应用中无法启动基于Eclipse Californium的CoAP服务器

解决Spring Boot集成Californium CoAP服务器时的Configuration异常

问题根源

你遇到的java.lang.IllegalStateException: Configuration contains no definitions!异常,是因为Californium 3.x版本的配置系统需要加载核心配置定义项,但当前依赖中缺少了负责提供这些定义的californium-config模块,导致初始化CoapServer时无法找到必要的配置元数据。

解决方案

1. 添加缺失的Maven依赖

在你的pom.xml中添加californium-config依赖:

<dependency>
    <groupId>org.eclipse.californium</groupId>
    <artifactId>californium-config</artifactId>
    <version>3.9.0</version>
</dependency>

这个模块会自动加载Californium所需的核心配置定义,解决配置为空的问题。

2. 修正CoAP服务器代码

你的代码中有两处需要调整:

  • coapServer.add()无参调用无实际意义,需添加具体的CoAP资源才能提供服务
  • 默认构造CoapServer后不会自动启动,需显式调用启动方法

修改后的配置类代码:

import org.eclipse.californium.core.CoapServer;
import org.eclipse.californium.core.CoapResource;
import org.eclipse.californium.core.server.resources.CoapExchange;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CoapServerConfiguration {

    @Bean
    public CoapServer coapServer() {
        int portNumber = 9995;
        CoapServer coapServer = new CoapServer(portNumber);
        
        // 添加示例CoAP资源,处理GET请求
        coapServer.add(new CoapResource("hello") {
            @Override
            public void handleGET(CoapExchange exchange) {
                exchange.respond("Hello from Spring Boot + Californium CoAP Server!");
            }
        });
        
        // 启动CoAP服务器
        coapServer.start();
        System.out.println("CoAP server started on port " + portNumber);
        return coapServer;
    }
}

3. 确保依赖完整性

验证你的Maven依赖包含以下完整模块,避免遗漏必要组件:

<dependency>
    <groupId>org.eclipse.californium</groupId>
    <artifactId>californium-core</artifactId>
    <version>3.9.0</version>
</dependency>
<dependency>
    <groupId>org.eclipse.californium</groupId>
    <artifactId>element-connector</artifactId>
    <version>3.9.0</version>
</dependency>
<dependency>
    <groupId>org.eclipse.californium</groupId>
    <artifactId>californium-config</artifactId>
    <version>3.9.0</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.36</version>
</dependency>
<dependency>
    <groupId>org.eclipse.californium</groupId>
    <artifactId>californium-legal</artifactId>
    <version>3.9.0</version>
    <scope>runtime</scope>
</dependency>

原理说明

Californium 3.x重构了配置系统,所有配置项都需要通过ConfigurationDefinition注册。californium-config模块中包含了核心网络、CoAP协议相关的配置定义,缺少它会导致Configuration实例为空,无法完成CoapServer的初始化。

内容的提问来源于stack exchange,提问作者Rajnish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 14:18:13