我按照https://community.hortonworks.com/articles/90355/collect-data-from-opc-ua-protocol.html中描述的步骤连接到NiFi的OPC UA服务器。
我使用Maven从源代码构建了https://github.com/wadesalazar/NIFI-OPCUA。结果是几个nar文件和jar文件。为我获得的jar和nar是:
OPC-UA-堆叠1.03.341.0-SNAPSHOT.jar
nifi-opcua束处理器-0.0.1-SNAPSHOT.jar
nifi-opcua服务-0.0.1-SNAPSHOT.jar
nifi-opcua服务-API-0.0.1-SNAPSHOT.jar
OPC部署本地-0.0.1-SNAPSHOT.jar
nifi-opcua服务-API-NAR-0.0.1-SNAPSHOT.nar
nifi-opcua服务-NAR-0.0.1-SNAPSHOT.nar
nifi-opcua束-NAR-0.0.1-SNAPSHOT.nar
如果我将所有nar和jar文件粘贴到nifi的lib文件夹中,则启动它时nifi会崩溃。错误是:
org.apache.nifi.processor.Processor: Provider com.kentender.nifi.nifi_opcua_bundle.GetNodeIds could not be instantiated
java.util.ServiceConfigurationError: org.apache.nifi.processor.Processor: Provider com.kentender.nifi.nifi_opcua_bundle.GetNodeIds could not be instantiated
at java.util.ServiceLoader.fail(ServiceLoader.java:232)
at java.util.ServiceLoader.access$100(ServiceLoader.java:185)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
at org.apache.nifi.nar.ExtensionManager.loadExtensions(ExtensionManager.java:138)
at org.apache.nifi.nar.ExtensionManager.discoverExtensions(ExtensionManager.java:104)
at org.apache.nifi.web.server.JettyServer.start(JettyServer.java:699)
at org.apache.nifi.NiFi.<init>(NiFi.java:160)
at org.apache.nifi.NiFi.main(NiFi.java:267)
Caused by: java.lang.NoClassDefFoundError: org/apache/nifi/processor/util/StandardValidators
at com.kentender.nifi.nifi_opcua_bundle.GetNodeIds.<clinit>(GetNodeIds.java:55)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380)
... 7 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.apache.nifi.processor.util.StandardValidators
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 14 common frames omitted
2017-07-27 18:24:14,184 INFO [Thread-1] org.apache.nifi.NiFi Initiating shutdown of Jetty web server...
2017-07-27 18:24:14,184 INFO [Thread-1] org.apache.nifi.NiFi Jetty web server shutdown completed (nicely or otherwise).
如果我只粘贴nar文件,Nifi启动,我能够看到自定义GetNodeIds处理器,但我无法从OPCUA服务器接收数据。该服务抛出类似
的错误java.lang.noclassdeffounderror: org/bouncycastle/crypto/DataLengthException
要将哪个nar和jar复制到NiFi的lib文件夹中以使其正常工作以及如何正确处理该过程。
答案 0 :(得分:0)
确保编译后收到的jar
文件包含在nar
个文件中。
所以你应该只将nar
复制到lib目录中。
但根据以下文档,upc-ua需要额外的jars
:
https://github.com/OPCFoundation/UA-Java#runtime-dependencies
只需将其他必需的库复制到lib文件夹中。
答案 1 :(得分:0)
我有同样的问题,我认为这是因为“ StandardValidators”类已移至nifi-utils-xxx.jar,您必须从maven存储库下载该文件,因为jar文件未集成在NIFI安装程序中。