Java nifi 1.0.0-扩展标准处理器的行为

Java nifi 1.0.0-扩展标准处理器的行为,java,apache-nifi,Java,Apache Nifi,我有一个扩展MergeContent过程的自定义处理器,当NiFi启动时,我在日志中出现以下错误: 2016-09-09 18:17:00,607 ERROR [main] org.apache.nifi.NiFi Failure to launch NiFi due to java.util.ServiceConfigurationError: org.apache.nifi.processor.Processor: Provider org.apache.nifi.processors.st

我有一个扩展MergeContent过程的自定义处理器,当NiFi启动时,我在日志中出现以下错误:

2016-09-09 18:17:00,607 ERROR [main] org.apache.nifi.NiFi Failure to launch NiFi due to java.util.ServiceConfigurationError: org.apache.nifi.processor.Processor: Provider org.apache.nifi.processors.standard.DetectDuplicate could not be instantiated
java.util.ServiceConfigurationError: org.apache.nifi.processor.Processor: Provider org.apache.nifi.processors.standard.DetectDuplicate could not be instantiated
        at java.util.ServiceLoader.fail(ServiceLoader.java:232) ~[na:1.8.0_101]
        at java.util.ServiceLoader.access$100(ServiceLoader.java:185) ~[na:1.8.0_101]
        at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384) ~[na:1.8.0_101]
        at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404) ~[na:1.8.0_101]
        at java.util.ServiceLoader$1.next(ServiceLoader.java:480) ~[na:1.8.0_101]
        at org.apache.nifi.nar.ExtensionManager.loadExtensions(ExtensionManager.java:107) ~[nifi-nar-utils-1.0.0.jar:1.0.0]
        at org.apache.nifi.nar.ExtensionManager.discoverExtensions(ExtensionManager.java:88) ~[nifi-nar-utils-1.0.0.jar:1.0.0]
        at org.apache.nifi.NiFi.<init>(NiFi.java:135) ~[nifi-runtime-1.0.0.jar:1.0.0]
        at org.apache.nifi.NiFi.main(NiFi.java:243) ~[nifi-runtime-1.0.0.jar:1.0.0]
Caused by: java.lang.NoClassDefFoundError: org/apache/nifi/distributed/cache/client/Serializer
        at java.lang.Class.getDeclaredConstructors0(Native Method) ~[na:1.8.0_101]
        at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) ~[na:1.8.0_101]
        at java.lang.Class.getConstructor0(Class.java:3075) ~[na:1.8.0_101]
        at java.lang.Class.newInstance(Class.java:412) ~[na:1.8.0_101]
        at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380) ~[na:1.8.0_101]
        ... 6 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.apache.nifi.distributed.cache.client.Serializer
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_101]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_101]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_101]
2016-09-09 18:17:00607错误[main]org.apache.nifi.nifi由于java.util.ServiceConfigurationError导致无法启动nifi错误:org.apache.nifi.processor.processor:Provider org.apache.nifi.processors.standard.DetectDuplicate无法实例化
java.util.ServiceConfigurationError:org.apache.nifi.processor.processor:Provider org.apache.nifi.processors.standard.DetectDuplicate无法实例化
在java.util.ServiceLoader.fail(ServiceLoader.java:232)~[na:1.8.0_101]
在java.util.ServiceLoader.access$100(ServiceLoader.java:185)~[na:1.8.0_101]
在java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)~[na:1.8.0_101]
在java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)~[na:1.8.0\u 101]
在java.util.ServiceLoader$1.next(ServiceLoader.java:480)~[na:1.8.0_101]
在org.apache.nifi.nar.ExtensionManager.loadExtensions(ExtensionManager.java:107)~[nifi-nar-utils-1.0.0.jar:1.0.0]
在org.apache.nifi.nar.ExtensionManager.discoverExtensions(ExtensionManager.java:88)~[nifi-nar-utils-1.0.0.jar:1.0.0]
在org.apache.nifi.nifi.(nifi.java:135)~[nifi-runtime-1.0.0.jar:1.0.0]
在org.apache.nifi.nifi.main(nifi.java:243)~[nifi-runtime-1.0.0.jar:1.0.0]
原因:java.lang.NoClassDefFoundError:org/apache/nifi/distributed/cache/client/Serializer
在java.lang.Class.getDeclaredConstructors0(本机方法)~[na:1.8.0_101]
在java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)~[na:1.8.0_101]
在java.lang.Class.getConstructor0(Class.java:3075)~[na:1.8.0_101]
在java.lang.Class.newInstance(Class.java:412)~[na:1.8.0_101]
在java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380)~[na:1.8.0_101]
... 省略了6个公共框架
原因:java.lang.ClassNotFoundException:org.apache.nifi.distributed.cache.client.Serializer
在java.net.URLClassLoader.findClass(URLClassLoader.java:381)~[na:1.8.0_101]
在java.lang.ClassLoader.loadClass(ClassLoader.java:424)~[na:1.8.0_101]
在java.lang.ClassLoader.loadClass(ClassLoader.java:357)~[na:1.8.0_101]
在Nifi 0.6.1/0.7.0上,它工作正常,但当我尝试使用PutSQL proc时,在属性列表中看不到已填充的DBCPConnectionPool服务


是否有适当的方法来扩展标准处理器的行为?

如果您正在扩展或使用NAR中其他NAR的组件,则它们之间需要有NAR依赖关系

本页演示如何在单独的NAR中设置处理器和控制器服务之间的正确链接:

这个GitHub项目也有一个完全适用于相同概念的示例:


从依赖关系的角度来看,扩展处理器和使用控制器服务应该是相同的设置,两者都需要能够从另一个NAR访问某些内容。

中。pom
从project
nifi mycustom NAR
添加以下依赖关系:

<dependency>
   <groupId>org.apache.nifi</groupId>
   <artifactId>nifi-standard-nar</artifactId>
   <version>1.4.0</version>
   <type>nar</type>
</dependency>
<dependency>
        <groupId>org.apache.nifi</groupId>
        <artifactId>nifi-standard-processors</artifactId>
        <version>1.4.0</version>
        <scope>provided</scope>
</dependency>

最后,重新编译新的nar文件并将其复制到
$NIFI/lib
目录中。

嘿,你能告诉我你是如何从标准处理器扩展的吗?