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

Apache NiFi 1.16.3自定义处理器依赖org.json遇封禁错误的解决咨询

解决Apache NiFi 1.16.3自定义处理器依赖org.json的问题

问题根源

NiFi官方封禁org.json依赖,是因为NiFi自身已集成Jackson等JSON处理库,引入org.json容易引发类路径冲突,同时会增加依赖冗余,因此通过nifi-dependency-ban-plugin强制拦截这类依赖。

解决方案

方案1:替换为NiFi自带的JSON处理库(推荐)

直接使用NiFi已包含的Jackson库处理JSON,无需额外引入依赖,彻底避免冲突:

import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.Map;

public class YourProcessor extends AbstractProcessor {
    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();

    @Override
    public void onTrigger(ProcessContext context, ProcessSession session) throws ProcessException {
        // 示例:解析JSON字符串
        String jsonStr = "{\"key\":\"value\"}";
        try {
            Map<String, Object> jsonMap = OBJECT_MAPPER.readValue(jsonStr, HashMap.class);
            getLogger().info("Parsed JSON: {}", new Object[]{jsonMap});
        } catch (Exception e) {
            getLogger().error("Failed to parse JSON", e);
        }
    }
}

方案2:强制将org.json打包到NAR包中

如果必须使用org.json,需修改POM配置绕过封禁并确保依赖被打包:

  1. 添加依赖并设置scope为compile
<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>你的版本号</version>
    <scope>compile</scope>
</dependency>
  1. 配置依赖封禁插件,添加org.json例外
<plugin>
    <groupId>org.apache.nifi</groupId>
    <artifactId>nifi-dependency-ban-plugin</artifactId>
    <version>1.16.3</version>
    <executions>
        <execution>
            <id>ban-dependencies</id>
            <goals>
                <goal>ban</goal>
            </goals>
            <configuration>
                <excludes>
                    <exclude>org.json:json</exclude>
                </excludes>
            </configuration>
        </execution>
    </executions>
</plugin>
  1. 配置Nar插件,确保org.json被打包进NAR
<plugin>
    <groupId>org.apache.nifi</groupId>
    <artifactId>nifi-nar-maven-plugin</artifactId>
    <version>1.16.3</version>
    <extensions>true</extensions>
    <configuration>
        <includeDependencies>
            <include>org.json:json</include>
        </includeDependencies>
    </configuration>
</plugin>

注意:设置<scope>provided</scope>会导致依赖不被打包,而NiFi运行环境中没有org.json类,因此会触发“类未找到”异常,必须使用compile scope并配置Nar插件打包该依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:15:19