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配置绕过封禁并确保依赖被打包:
- 添加依赖并设置scope为compile
<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>你的版本号</version> <scope>compile</scope> </dependency>
- 配置依赖封禁插件,添加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>
- 配置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类,因此会触发“类未找到”异常,必须使用compilescope并配置Nar插件打包该依赖。
内容的提问来源于stack exchange,提问作者millerbill3
相关产品推荐
相关产品推荐

