【发布时间】:2017-03-14 05:03:24
【问题描述】:
我正在尝试加载自定义 NiFi 处理器,但无法让 NiFi 加载我所有的 .nar 依赖项,尽管尝试了各种 pom.xml 配置。我在 SO 上遇到过一些类似的问题,但没有找到这个问题的答案。
我使用 mvn clean install 将我的处理器打包为 .nar,然后将 .nar 复制到 NIFI_HOME/lib。目前我得到java.lang.ClassNotFoundException: org.apache.http.conn.HttpClientConnectionManager。当前 pom 依赖项:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<nifi.version>1.1.2</nifi.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-api</artifactId>
<version>${nifi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-utils</artifactId>
<version>${nifi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-standard-services-api-nar</artifactId>
<version>${nifi.version}</version>
<type>nar</type>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-ssl-context-service</artifactId>
<version>${nifi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-ssl-context-service-api</artifactId>
<version>${nifi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.nifi</groupId>
<artifactId>nifi-processor-utils</artifactId>
<version>${nifi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.4.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.1</version>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.9.7</version>
</dependency>
</dependencies>
我 nar 的 NIFI_HOME/.../bundled-dependencies/ 包含所有指定的 jar:
bcpkix-jdk15on-1.55.jar joda-time-2.9.7.jar
bcprov-jdk15on-1.55.jar nifi-api-1.1.2.jar
commons-codec-1.9.jar nifi-processor-utils-1.1.2.jar
commons-io-2.5.jar nifi-security-utils-1.1.2.jar
commons-lang3-3.4.jar nifi-ssl-context-service-1.1.2.jar
commons-logging-1.2.jar nifi-ssl-context-service-api-1.1.2.jar
httpclient-4.4.1.jar nifi-utils-1.1.2.jar
httpcore-4.4.1.jar
完整的堆栈跟踪:
2017-03-13 11:11:23,146 ERROR [main] org.apache.nifi.NiFi Failure to launch NiFi due to java.util.ServiceConfigurationError: org.apache.nifi.processor.Processor: Provider com.alar.nifi.processors.GetIBright could not be instantiated
java.util.ServiceConfigurationError: org.apache.nifi.processor.Processor: Provider com.alar.nifi.processors.GetIBright could not be instantiated
at java.util.ServiceLoader.fail(ServiceLoader.java:232) ~[na:1.8.0_111]
at java.util.ServiceLoader.access$100(ServiceLoader.java:185) ~[na:1.8.0_111]
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384) ~[na:1.8.0_111]
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404) ~[na:1.8.0_111]
at java.util.ServiceLoader$1.next(ServiceLoader.java:480) ~[na:1.8.0_111]
at org.apache.nifi.nar.ExtensionManager.loadExtensions(ExtensionManager.java:116) ~[nifi-nar-utils-1.1.2.jar:1.1.2]
at org.apache.nifi.nar.ExtensionManager.discoverExtensions(ExtensionManager.java:97) ~[nifi-nar-utils-1.1.2.jar:1.1.2]
at org.apache.nifi.NiFi.<init>(NiFi.java:139) ~[nifi-runtime-1.1.2.jar:1.1.2]
at org.apache.nifi.NiFi.main(NiFi.java:262) ~[nifi-runtime-1.1.2.jar:1.1.2]
Caused by: java.lang.NoClassDefFoundError: org/apache/http/conn/HttpClientConnectionManager
at java.lang.Class.getDeclaredConstructors0(Native Method) ~[na:1.8.0_111]
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) ~[na:1.8.0_111]
at java.lang.Class.getConstructor0(Class.java:3075) ~[na:1.8.0_111]
at java.lang.Class.newInstance(Class.java:412) ~[na:1.8.0_111]
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380) ~[na:1.8.0_111]
... 6 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.apache.http.conn.HttpClientConnectionManager
at java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[na:1.8.0_111]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_111]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) ~[na:1.8.0_111]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_111]
... 11 common frames omitted
【问题讨论】:
-
能否提供类未找到异常的堆栈跟踪?
-
嗨,是的,我已将堆栈跟踪添加到问题中
-
@JustinMoore 希望您在将
.jar文件放在lib文件夹下后重新启动NiFi 服务器 -
@Pons 是的,我已经重新启动了 NiFi,当它尝试在启动时加载新的自定义处理器时发生错误。另外 - 它是一个 .nar 文件,而不是 .jar
-
不正确的一件事(但不应与此问题相关)是您不应该在 NAR 中包含控制器服务 JAR。您的 NAR pom 应该对控制器服务 API 具有 NAR 依赖项,并且您的处理器 pom 应该对 API 具有提供的依赖项,以便它在编译时可用但在构建时不包含在内。 cwiki.apache.org/confluence/display/NIFI/…
标签: java apache-nifi