2017-03-13 1 views
0

사용자 정의 NiFi 프로세서를로드하려고하지만 다양한 pom.xml 구성을 시도해도 NiFi가 모든 .nar 종속성을로드 할 수 없습니다. 그래서 비슷한 질문을 한 적이 있지만이 문제에 대한 답을 찾지 못했습니다.NiFI 사용자 정의 프로세서 ClassNotFoundException

내 프로세서를 mvn 새로 설치로 .nar로 패키징 한 다음 .nar를 NIFI_HOME/lib에 복사하십시오. 현재 나는 java.lang.ClassNotFoundException: org.apache.http.conn.HttpClientConnectionManager입니다. 현재 치어 종속성 :

<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 /.../ 번들 의존성은/지정된 모든 단지를 포함

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 
+1

클래스를 찾을 수없는 예외에 대해 스택 추적을 제공 할 수 있습니까? –

+0

안녕하세요, 질문에 스택 추적을 추가했습니다. –

+0

@JustinMoore'lib' 폴더에'.jar' 파일을 놓은 후 NiFi 서버를 다시 시작했으면합니다. – Pons

답변

2

은 수정하여이 문제를 해결 내 단일 pom.xml을 부모 pom.xml과 함께 별도의 build (nar) 및 compile (jar) pom.xml 파일에 저장합니다.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <artifactId>nifi-ibright-bundle</artifactId> 
    <packaging>pom</packaging> 
    <groupId>com.alar.nifi</groupId> 
    <version>1.0-SNAPSHOT</version> 

    <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> 

    <modules> 
     <module>nifi-ibright-processor</module> 
     <module>nifi-ibright-nar</module> 
    </modules> 
    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <groupId>com.alar.nifi</groupId> 
       <artifactId>nifi-ibright-processor</artifactId> 
       <version>1.0-SNAPSHOT</version> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.nifi</groupId> 
       <artifactId>nifi-nar-maven-plugin</artifactId> 
       <version>1.0.0-incubating</version> 
       <extensions>true</extensions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <version>2.15</version> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

nifi-ibright-NAR/pom.xml 파일 :

는 전에 작동하지 않았다하지만

부모의 pom.xml 아래의 pom.xml 파일을 포함 왜 확실하지 않음

<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <groupId>com.alar.nifi</groupId> <artifactId>nifi-ibright-bundle</artifactId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <groupId>com.alar.nifi</groupId> <artifactId>nifi-ibright-processor</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <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-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> </project> 
관련 문제